【问题标题】:Django Model Wizard : IntegrityError Column "user_id" cannot be nullDjango 模型向导:IntegrityError 列“user_id”不能为空
【发布时间】:2016-04-13 07:34:53
【问题描述】:

我在尝试使用 django 向导时遇到了一个小问题,我正在摸索解决它

这是我的模型:

class Profile(models.Model):
    profile_user = models.OneToOneField(User,db_index=True)
    studio = models.ForeignKey(Account)

这是我的wizard.py:

from django.utils.translation import ugettext_lazy as _
from django.forms.models import modelform_factory
from formtools.wizard.views import SessionWizardView
from .models import *

class NewModelWizard(SessionWizardView):
     form_list = [
         (_('New model registration'),modelform_factory(User, fields=('username','password'))),
         (_('Model data'), modelform_factory(Profile))
     ]
template_name = "create_profile.html"

def done(self,form_list, **kwargs):
    user = form_list[0].save()
    profile = form_list[1].save(commit=False)
    profile.studio = self.request.user.account
    profile.user = User.objects.get(id=user.id)
    profile.save()

提交向导后,遇到如下错误:

IntegrityError : (1048, "Column 'profile_user_id' cannot be null")

我看不出我在这里做错了什么,有人知道发生了什么以及如何解决它吗?

【问题讨论】:

    标签: python django django-formwizard


    【解决方案1】:

    您的字段名称是profile_user,所以使用它。

    profile.profile_user = user
    

    请注意,您不必从数据库中重新获取用户,只需使用user

    【讨论】:

    • 哦,是的,你是对的!这是一个愚蠢的错误......非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2018-10-13
    • 2021-09-03
    • 1970-01-01
    • 2016-10-21
    • 2018-01-06
    相关资源
    最近更新 更多