我正在尝试保存一个 M2M 对象(将其设置为默认值,即 id = 1 的值)。
问题我收到以下错误:
"<User: user556>" needs to have a value for field "id" before this many-to-many relationship can be used.
我查看了以前的提要,其中涵盖了相同的错误,但没有人解释它何时发生在 form_valid 函数中,就像我发生的那样
我的代码如下:
def form_valid(self,form):
instance = form.instance
instance.groups.set(1)
instance.save()
return super(UserCreateView,self).form_valid(form)
最佳答案
您首先需要保存您的实例,使其具有主键,否则您无法在联结表中创建记录。
因此,您可以通过以下方式实现:
from django.http import HttpResponseRedirect
def form_valid(self,form):
instance = form<b>.save()</b>
instance.groups.set(1)
return HttpResponseRedirect(self.get_success_url())
这里有必要返回HttpResponseRedirect
,因为super().form_valid()
会将表单再次保存到数据库,并且还会设置组
到表单中指定的内容。
关于python - 在使用此多对多关系之前,django "<User: user556>"需要为字段 "id"提供一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67502157/