NOT NULL约束失败:app_business.user_id

时间:2017-10-01 13:04:40

标签: python django

我正在呈现表单,当我提交该表单时会收到此错误

  

/ business /的IntegrityError   NOT NULL约束失败:app_business.user_id

models.py

class business(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=400)
    rate_it = models.BooleanField(default=False)
    availibility = models.BooleanField(default=True)

    def __str__(self):
        return self.name

forms.py

class businessform(forms.ModelForm):
    class Meta:
        model = business
        fields = ['name', 'rate_it', 'availibility']

views.py

def formview(request):
    if request.method == 'POST':
        form = businessform(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponse('saved')
    else:
        form = businessform
        return render(request, 'business.html', {'form':form})

html文件

<form method="POST" action="">
{% csrf_token %}

 {{form.as_p}}

<input type="submit" name="submit">
</form>

我不知道为什么会出现这个错误。

1 个答案:

答案 0 :(得分:0)

当您保存form时,您尚未通过任何user个对象。在保存user时传递form对象,或在模型中设置user字段null=True, blank=True

user = models.ForeignKey(User, null=True, blank=True)

修改

创建一个user对象并先保存。然后在表单中传递该实例以更新从模板获得的值。然后保存表单。

user = User.objects.create_user(username=username, password=password)
user.save()
obj = business.objects.create(user=user, name="")
form = form = businessform(request.POST, instance=obj)

if form.is_valid():
    form.save()
    return HttpResponse('saved')

注意用户名。用户名必须是唯一的。所以,你需要生成这些。