可能很愚蠢或者已经回答了这个问题,抱歉。我知道根据定义布尔值应该有2个值,但我想知道在django中存储“第三个”的好做法是什么 None 值,比如可选的布尔字段。到目前为止我用的是 CharField 或者 ChoiceField 有“是”、“否”、“无数据”但我觉得这不是最佳的。有没有更好的方法可以使用一个特殊的booleanfield来存储真/假/空之类的东西?
None
CharField
ChoiceField
kse8i1jr1#
django有 NullBooleanField 这是一个 BooleanField 但两者都在哪里 null=True 以及 blank=True 等等。在django-2.1中,文档提到 null=True 允许进行 BooleanField ,而且 NullBooleanField 可能会被否决:在旧版本中,此字段不允许 null=True ,所以你必须使用 NullBooleanField 相反。现在不鼓励使用后者,因为它在django的未来版本中可能会被弃用。在django的早期版本中,因此不可能写作 BooleanField(null=True) ,但这种行为已经改变了。不管将使用什么,其想法是数据库可以存储三个可能的值: TRUE (Map到 True ), FALSE (Map到 False ),和 NULL (Map到 None ).注意,就像 CharField s、 你可以设置 choices 让值Map到更“感性”的显示上。
NullBooleanField
BooleanField
null=True
blank=True
BooleanField(null=True)
TRUE
True
FALSE
False
NULL
choices
hs1ihplo2#
你可以用 NullBooleanField 为了这个。
2条答案
按热度按时间kse8i1jr1#
django有
NullBooleanField
这是一个BooleanField
但两者都在哪里null=True
以及blank=True
等等。在django-2.1中,文档提到
null=True
允许进行BooleanField
,而且NullBooleanField
可能会被否决:在旧版本中,此字段不允许
null=True
,所以你必须使用NullBooleanField
相反。现在不鼓励使用后者,因为它在django的未来版本中可能会被弃用。在django的早期版本中,因此不可能写作
BooleanField(null=True)
,但这种行为已经改变了。不管将使用什么,其想法是数据库可以存储三个可能的值:
TRUE
(Map到True
),FALSE
(Map到False
),和NULL
(Map到None
).注意,就像
CharField
s、 你可以设置choices
让值Map到更“感性”的显示上。hs1ihplo2#
你可以用
NullBooleanField
为了这个。