如何在Django表单中存储NullBooleanField中的值

时间:2017-05-04 11:50:46

标签: python django forms

我正在尝试从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()

1 个答案:

答案 0 :(得分:2)

<强>解决方案

以下是解决问题的方法。

forms.NullBooleanField(
    widget=forms.RadioSelect(renderer=HorizontalRadioRendererSpace,
        choices=CHOICES),
    label='...',
    required=False
)

在模型中处理NullBooleanField时需要使用NullBooleanField