我使用了一个小部件框架,不幸的是,它在DOM中的request.POST
标签之外移动了一些输入。因此,我必须创建隐藏的输入,然后使用javascript设置它们,以便在"Yes"
中传递它们。
问题是,虽然我使用"No"
,"Unknown"
和None
值as per the docs here,但它们会被转换为{{1在cleaned_data
中。以下是相关视图中几个打印函数的示例:
n_var=Yes&n_short=Unknown&p_widget=Unknown&n_long=Yes&verbatim=Blah ...
{'n_var': None, 'n_short': None, 'p_widget': None, 'n_long': None, 'verbatim': 'Blah' ...
表单为ModelForm
,并保存不是NullBooleanField
的字段。提取物:
class MyForm(forms.ModelForm):
n_var = forms.NullBooleanField(required=False)
n_short = forms.NullBooleanField(required=False)
p_widget = forms.NullBooleanField(required=False)
n_long = forms.NullBooleanField(required=False)
verbatim = forms.CharField(required=False, max_length=32) #saves fine
发生了什么?如何手动将我的NullBoolean数据添加到表单中?
答案 0 :(得分:1)
小部件的显示值为“未知'”,“是'是'否'。
但是,如果您查看source code,则会看到提交的值为' 1',' 2'和' 3' (对于' Unknown',' Yes',' No')。
您应该使用字符串作为隐藏输入。