models.py
my_field = models.NullBooleanField(null=True)
forms.py
my_field = forms.BooleanField(
label='my_field',
required=False,
widget=forms.RadioSelect(choices=[(True,'yes'),(False,'no')]))
在未选择单选按钮的情况下提交表单时,该表单将保存并默认为false。它不应该默认为Null吗?
答案 0 :(得分:0)
您的表单使用forms.BooleanField
作为表单字段,因此它没有None
的概念。您应该使用NullBooleanField
[Django-doc]:
class SomeForm(forms.Form):
my_field = forms.NullBooleanField(
label='my_field',
required=False,
widget=forms.RadioSelect(choices=[(True,'yes'),(False,'no')])
)
正如documentation of the NullBooleanField
所说:
NullBooleanField
class NullBooleanField(**kwargs)
- 默认小部件:NullBooleanSelect
- 空值:
None
- 标准化为:Python
True
,False
或None
值。- 不进行任何验证(即,它从不引发ValidationError)。
对于BooleanField
,空值为False
:
BooleanField
class BooleanField(**kwargs)
- 默认小部件:CheckboxInput
- 空值:
False
- 标准化为:Python
True
或False
值。- 如果该字段具有
True
,则验证该值为required=True
(例如,复选框已选中)。- 错误消息键:必需