我正在呈现表单,当我提交该表单时会收到此错误
/ 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>
我不知道为什么会出现这个错误。
答案 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')
注意用户名。用户名必须是唯一的。所以,你需要生成这些。