布尔值True / False / None

时间:2018-08-09 09:51:18

标签: mysql django django-models

在这里可能很愚蠢或已经回答了问题,对此感到抱歉。

根据定义,我知道一个布尔值应该具有2个值,但是我想知道在Django中,为可选的布尔字段存储“第三个” None值是什么好习惯 >。

到目前为止,我使用CharFieldChoiceField来表示“ yes”,“ no”,“ no_data”,但我觉得它不是最佳选择。有没有更好的方法,也许使用可以存储true / false / null之类的特殊BooleanField?

2 个答案:

答案 0 :(得分:4)

您可以为此使用NullBooleanField

答案 1 :(得分:4)

Django具有NullBooleanField,这是BooleanField的子类,但是null=Trueblank=True都在其中。

中,documentation提到null=True被允许使用BooleanField,而NullBooleanField可能会被弃用:

  

在旧版本中,此字段不允许null=True,因此您必须   请改用NullBooleanField。现在不建议使用后期,因为   将来的Django版本可能会弃用它。

在更早的Django版本中,不可能编写BooleanField(null=True),但是这种行为已经改变。

无论使用什么方式,其想法都是数据库可以存储三个可能的值:TRUE(映射到True),FALSE(映射到False) ,和NULL(映射到None)。

请注意,就像CharField一样,您可以设置choices以使这些值映射到更多的“感性”显示器上。