Django createview 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

正在尝试将团队的创建者自动添加到成员。 团队模型与成员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(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”。