django - 当表单上留空时,Django nullbooleanfield 默认为“False”,不应该为 Null 吗?
问题描述
模型.py
my_field = models.NullBooleanField(null=True)
表格.py
my_field = forms.BooleanField(
label='my_field',
required=False,
widget=forms.RadioSelect(choices=[(True,'yes'),(False,'no')]))
当提交表单时未选择单选按钮,表单将保存并默认为 false。它不应该默认为 Null 吗?
解决方案
您的表单使用forms.BooleanField
as 表单字段,因此它没有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')])
)
正如文档NullBooleanField
所说:
NullBooleanField
class NullBooleanField(**kwargs)
- 默认小部件:NullBooleanSelect
- 空值:
None
- 规范化为: Python
True
或值。False
None
- 不验证任何内容(即,它从不引发 ValidationError)。
而对于 a BooleanField
,空值为False
:
BooleanField
class BooleanField(**kwargs)
- 默认小部件:CheckboxInput
- 空值:
False
- 规范化为:Python
True
或False
值。- 如果字段具有,则验证该值为
True
(例如选中复选框)required=True
。- 错误消息键:必需
推荐阅读
- plugins - ST3 插件将选择附加到新文件的末尾
- java - 如何正确更新 Snake 2D 身体
- javascript - VelocityJS 逐步缓动似乎不再起作用了?
- php - PHP - 当语句为真时隐藏元素
- python - ImportError:没有名为 firebase_admin 的模块,同时尝试将数据提交到数据流中的 firestore
- java - Java Regex 匹配整个单词与特殊字符的任意组合
- c# - EF6 - 一对零或一关系 - 自己的主键和 CascadeDelete
- google-bigquery - > 运算符中的子查询结果
- laravel - Laravel 客户支持与第三方 Pusher 聊天
- webserver - Nginx 端口转发,使用 uwsgi 瓶