布尔值True/False/None

3

这可能是一个愚蠢或已经有答案的问题,对此感到抱歉。

我知道按定义,布尔值应该具有2个值,但我想知道在Django中存储“第三” None 值的最佳实践,比如可选布尔字段。

目前,我使用 CharField ChoiceField ,其中包括“是”,“否”,“无数据”,但我觉得这不是最优解。是否有更好的方法,可以使用特殊的BooleanField来存储true / false / null之类的东西?

2个回答

5

2
我以为使用 NullBooleanField 只是将 False 存储为 null 而不是 0,感谢您的快速回答。 - Cyrlop

4

Django有一个NullBooleanField,它是BooleanField的子类,但两者都可以使用null=Trueblank=True

中,文档提到null=True允许使用在BooleanField中,并且NullBooleanField可能会被弃用:

在旧版本中,这个字段不允许使用null=True,所以你必须使用NullBooleanField。然而,使用后者现在已经不被推荐,因为它很可能会在未来的 Django 版本中被弃用。
在 Django 的早期版本中,无法编写 BooleanField(null=True),但这种行为已经改变了。
无论使用什么,数据库都可以存储三个可能的值:TRUE(映射到True),FALSE(映射到False)和NULL(映射到None)。
请注意,就像CharField一样,您可以设置choices,以便将值映射到更“合理”的显示方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接