布尔真/假/无

vsmadaxz  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(286)

可能很愚蠢或者已经回答了这个问题,抱歉。
我知道根据定义布尔值应该有2个值,但我想知道在django中存储“第三个”的好做法是什么 None 值,比如可选的布尔字段。
到目前为止我用的是 CharField 或者 ChoiceField 有“是”、“否”、“无数据”但我觉得这不是最佳的。有没有更好的方法可以使用一个特殊的booleanfield来存储真/假/空之类的东西?

kse8i1jr

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到更“感性”的显示上。

hs1ihplo

hs1ihplo2#

你可以用 NullBooleanField 为了这个。

相关问题