Django中user_id不能为NULL
我有两个模型,一个是用户(User),另一个是客户(Customer)。在客户模型中,我有一个叫做 customer = models.ForeignKey(Customer, related_name='orders') 的字段。我想把用户和客户的表单一起保存,如果其中一个表单出错,那么两个都不应该保存。当我创建一个视图来保存这两个表单时,出现了一个错误,提示 mainsiteapp_customer.user_id 不能为 NULL。
我尝试了各种方法,最后的代码如下:
if request.method == 'POST':
userform = UserForm(request.POST)
customerform = CustomerForm(request.POST)
if userform.is_valid():
u = userform.save()
Customer.user = u
print Customer.user
if customerform.is_valid():
c = customerform.save(commit=False)
try:
c.full_clean()
c.save()
print c
return HttpResponseRedirect('/webshop/')
except ValidationError, e:
pass
u.delete()
else:
userform = UserForm()
customerform = CustomerForm()
context = RequestContext(request, {'userform':userform, 'customerform':customerform,})
return render_to_response('userRegister.html', context)
现在已经过去9天了,我还是找不到自己哪里出错了。
如果有人知道我哪里做错了,感谢你!
2 个回答
0
你只需要用一个“与”语句来检查用户表单和客户表单是否都是有效的。
def userForm(request):
if request.method == 'POST':
userform = UserForm(request.POST)
customerform = CustomerForm(request.POST)
if userform.is_valid() and customerform.is_valid():
c = customerform.save()
u = userform.save(commit=False)
u.customer=c
u.save()
return HttpResponseRedirect('/webshop/')
else:
userform = UserForm()
customerform = CustomerForm()
context = RequestContext(request, {'userform':userform, 'customerform':customerform,})
return render_to_response('userRegister.html', context)
1
Customer.user = u
if customerform.is_valid():
c = customerform.save(commit=False)
你在这里设置了模型的类变量 user
。其实你应该设置客户的用户属性,像这样 c.user = u
。