Django createview m2m未保存
正在尝试将团队的创建者自动添加到成员。 团队模型与成员UserProfile有m2m关系,代码如下:Django createview m2m未保存,django,Django,正在尝试将团队的创建者自动添加到成员。 团队模型与成员UserProfile有m2m关系,代码如下: class CreateTeamView(generic.CreateView): model = Team template_name = 'team_create.html' fields = ('title', 'code', 'coordinator', 'description', 'members') success_url = '/teams' def form_valid(se
class CreateTeamView(generic.CreateView):
model = Team
template_name = 'team_create.html'
fields = ('title', 'code', 'coordinator', 'description', 'members')
success_url = '/teams'
def form_valid(self, form):
instance = form.save(commit=False)
if not instance.creator:
instance.creator = self.request.user.userprofile
instance.save()
instance.members.add(instance.creator)
form.save_m2m()
return super().form_valid(form)
但它不起作用。团队被创建,创建者也被分配,但不会添加到成员中。请告诉我。首先,调用.save\u m2m()form方法并运行
super().form\u valid(form)
,然后将新成员添加到实例中。试试这个:
如果不是instance.creator:
userprofile=self.request.user.userprofile
instance.creator=userprofile
save()实例
表单.保存_m2m()
res=super().form\u有效(form)
instance.members.add(userprofile)
返回res
我删除了super()调用并添加了get\u success\u url
方法
if not instance.creator:
userprofile = self.request.user.userprofile
instance.creator = userprofile
instance.save()
form.save_m2m()
instance.members.add(userprofile)
return HttpResponseRedirect(self.get_success_url())
现在可以用了。对不起,不行。我认为这是由于
returnsuper().form\u valid(form)
。如果我在pdb中检查表单,它没有新添加的成员。所以如果这是问题,让我们试试我编辑的代码。首先调用super().form_valid(form)并将返回值保存到“res”变量,然后将成员添加到实例,最后返回“res”。