基本上,我有一个模型User
(django的模型)和Customer
(与用户模型1:1)我也有一个List
模型,在那里登录的客户可以使任何列表。ListForm
:
class CreateListForm(forms.ModelForm):
class Meta:
model = List
fields = ['list_title', 'excerpt', ]
和View (POST) function
:
def post(self, request):
post = request.POST
list_form = CreateListForm(request.POST)
if list_form.is_valid():
list_form.save()
return redirect('indexpage')
还有一个隐藏的输入,我在html模板中添加了客户id:
<input type="hidden" name="customer" value="{{ user.customer.id }}">
然而,当我试图通过list_form.save()
保存表单时,我得到NOT NULL constraint failed: todo_list.customer_id
。
我可以在字段中传递客户,但这将是反逻辑的,因为只有登录的用户才能制作列表。
你可以在你的表单中包含隐藏字段,它可以将所有数据作为django表单的一部分保存在一起。
class CreateListForm(forms.ModelForm):
class Meta:
model = List
fields = ['customer', 'list_title', 'excerpt', ]
widgets = {
'customer': forms.HiddenInput()
}
在视图中创建表单时,可以向隐藏字段提供数据;
form = CreateListForm(initial={'customer': request.user.customer.id})