我的 Django 应用程序中的 CreateView 出现问题,我想创建一个 session ,但 session 只能由该组的 GroupMember 领导者创建。
这是我的模型:
class Group(models.Model):
# The code
class GroupMember(models.Model):
member = models.ForeignKey(Volunteer)
group = models.ForeignKey(Group)
leader = models.BooleanField(default=False)
class Session(models.Model):
name = models.CharField(max_length=250)
group = models.ForeignKey(Group)
assistants = models.ManyToManyField(GroupMember, through='SessionAssistant')
hours = models.FloatField(default=1)
day = models.DateTimeField(default=datetime.now)
class SessionAssistant(models.Model):
assistant = models.ForeignKey(GroupMember)
session = models.ForeignKey(Session)
rol = models.CharField(max_length=250)
assist = models.BooleanField(default=True)
此外,我希望当我创建 session 时我可以分配我的助手的角色,这是我的观点:
class CreateSession(CreateView):
model = Session
template_name = "session_form.html"
fields = ['name',
'hours',
'day',
'assistants', ]
success_url = '/'
def form_valid(self, form):
group = Group.objects.get(id=self.kwargs['pk'])
form.instance.group = group
return super(CreateSession, self).form_valid(form)
最佳答案
Django 不保存自定义的ManyToMany
关系。看看official documentation 。
您可以使用保存表单
form.save()
然后从SessionAssistant
创建一个新对象
for assistant in form.cleaned_data['assistants']:
SessionAssistant.objects.create(assistant=assistant, session=form.instance)
关于python - Django:无法在指定中间模型的 ManyToManyField 上设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44767405/