python - 在使用此多对多关系之前,django "<User: user556>"需要为字段 "id"提供一个值

标签 python django django-views

我正在尝试保存一个 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/

相关文章:

python - 如何将字符串转换为在 Django 中调用模型的名称?

django - 从基于类的通用 View 获取 request.session

python - Microsoft Azure 文本转语音如何无需说话直接保存文件?

python - 即使严格的输入有效,表单验证上的 Django TestCase 也会失败

django - 如何在不同站点之间构建安全的 Django 单点登录?

python - Django - 数据库错误 : No such table

python - Django,模型对象未显示在 View 中

Python 3.3 C 字符串处理(wchar_t 与 char)

python - 如何计算Python数据帧的列中不同版本字符串的出现次数?

python - 行的循环和 XLSXwriter 格式