【问题标题】:Boolean True/False/None布尔值 True/False/None
【发布时间】:2018-08-09 09:51:18
【问题描述】:

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

我知道根据定义,布尔值应该有 2 个值,但我想知道 在 Django 中存储“第三个”None 值的最佳做法是什么,比如说可选的布尔字段。

到目前为止,我使用带有“yes”、“no”、“no_data”的CharField 或ChoiceField,但我觉得这不是最佳选择。是否有更好的方法可以使用可以存储 true/false/null 或类似内容的特殊 BooleanField?

【问题讨论】:

    标签: mysql django django-models


    【解决方案1】:

    您可以为此使用NullBooleanField。

    【讨论】:

    • 我认为使用NullBooleanField 只是将False 存储为null 而不是0,感谢您的快速回答。
    【解决方案2】:

    Django 有NullBooleanField,这是BooleanField 的子类,但null=True 和blank=True 都存在。

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

    在旧版本中,此字段不允许null=True,因此您必须 请改用NullBooleanField。现在不鼓励使用 后者 它可能会在 Django 的未来版本中被弃用。

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

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

    请注意,就像CharFields 一样,您可以设置choices 以让值映射到更“合理”的显示上。

    【讨论】:

      猜你喜欢
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2013-10-17
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      相关资源
      最近更新 更多