如何在表单中手动注入NullBooleanField数据?

时间:2016-04-06 13:55:22

标签: javascript django forms

我使用了一个小部件框架,不幸的是,它在DOM中的request.POST标签之外移动了一些输入。因此,我必须创建隐藏的输入,然后使用javascript设置它们,以便在"Yes"中传递它们。

问题是,虽然我使用"No""Unknown"Noneas per the docs here,但它们会被转换为{{1在cleaned_data中。以下是相关视图中几个打印函数的示例:

request.POST.urlencode()

n_var=Yes&n_short=Unknown&p_widget=Unknown&n_long=Yes&verbatim=Blah ...

form.cleaned_data

{'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数据添加到表单中?

1 个答案:

答案 0 :(得分:1)

小部件的显示值为“未知'”,“是'是'否'。

但是,如果您查看source code,则会看到提交的值为' 1',' 2'和' 3' (对于' Unknown',' Yes',' No')。

您应该使用字符串作为隐藏输入。