我正在尝试从Django表单中将数据插入NullBooleanField()
,但是,只添加了'True'
。
我已从表单中的3个不同字段打印清理过的数据,如下所示:
True
False
None
(这是我期望的样子 - 因为我选择了3个不同的选项)
这就是表单字段的样子:
MY_CHOICES = [(True, 'Yes'), (False, 'No'), (None, 'N/A')]
field_1 = forms.ChoiceField(
required=True,
choices=MY_CHOICES,
widget=forms.RadioSelect(renderer=HorizontalRadioRenderer),
label="Field 1"
)
这就是模型中的字段:
field_1 = models.NullBooleanField()
我不明白为什么当我签入Django admin时数据总是以'True'
插入。
在Django admin中,选项如下:"Yes, No, Unknown"
所以我尝试将表单选项更改为如下所示:
MY_CHOICES = [('Yes', 'Yes'), ('No', 'No'), ('Unknown', 'N/A')]
但又一次,这不起作用。
有人可以在这里提出可能存在的问题吗?
编辑 - 显示如何将其保存到模型
new_entry = ModelName(
field_1=form.cleaned_data['field_1'],
field_2=form.cleaned_data['field_2'],
field_3=form.cleaned_data['field_3'],
)
new_entry.save()
答案 0 :(得分:2)
<强>解决方案强>
以下是解决问题的方法。
forms.NullBooleanField(
widget=forms.RadioSelect(renderer=HorizontalRadioRendererSpace,
choices=CHOICES),
label='...',
required=False
)
在模型中处理NullBooleanField时需要使用NullBooleanField