在这里可能很愚蠢或已经回答了问题,对此感到抱歉。
根据定义,我知道一个布尔值应该具有2个值,但是我想知道在Django中,为可选的布尔字段存储“第三个” None
值是什么好习惯 >。
到目前为止,我使用CharField
或ChoiceField
来表示“ yes”,“ no”,“ no_data”,但我觉得它不是最佳选择。有没有更好的方法,也许使用可以存储true / false / null之类的特殊BooleanField?
答案 0 :(得分:4)
您可以为此使用NullBooleanField
。
答案 1 :(得分:4)
Django具有NullBooleanField
,这是BooleanField
的子类,但是null=True
和blank=True
都在其中。
在django-2.1中,documentation提到null=True
被允许使用BooleanField
,而NullBooleanField
可能会被弃用:
在旧版本中,此字段不允许
null=True
,因此您必须 请改用NullBooleanField
。现在不建议使用后期,因为 将来的Django版本可能会弃用它。
在更早的Django版本中,不可能编写BooleanField(null=True)
,但是这种行为已经改变。
无论使用什么方式,其想法都是数据库可以存储三个可能的值:TRUE
(映射到True
),FALSE
(映射到False
) ,和NULL
(映射到None
)。
请注意,就像CharField
一样,您可以设置choices
以使这些值映射到更多的“感性”显示器上。