Django 框架,使用 modelforms>



基本上,我有一个模型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})

最新更新