Django 模型向导:IntegrityError 列 "user_id" 不能为空
Django Model Wizard : IntegrityError Column "user_id" cannot be null
我在尝试使用 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")
我看不出我做错了什么,有人知道发生了什么以及如何解决吗?
您的字段名称是 profile_user
,请使用它。
profile.profile_user = user
请注意,您不必从数据库中重新获取用户,只需使用 user
。
我在尝试使用 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")
我看不出我做错了什么,有人知道发生了什么以及如何解决吗?
您的字段名称是 profile_user
,请使用它。
profile.profile_user = user
请注意,您不必从数据库中重新获取用户,只需使用 user
。