何时在Django中使用NullBooleanField

the*_*bot 5 django django-models

我有一个按钮,当单击该按钮时,应该将用户喝过水的状态保存在数据库中。我只是想检查NullBooleanField是否是定义此方法的正确方法。

如果得到回答,将对社区有用的一个更广泛的问题是使用NullBooleanField的最佳情况列表。但是我在这里不是问这个。以防万一您想要更好的挑战。

先感谢您。

bon*_*kic 11

您需要回答的问题来确定您是否应该使用BooleanField或,NullBooleanField这实际上与您要在模型中表示的字段的值的可能状态有关:

2种可能的状态:

  • 用户喝了水
  • 用户没有喝水

?使用BooleanField

3种可能的状态:

  • 用户喝了水
  • 用户没有喝水
  • 未知用户是否喝过水

?使用NullBooleanField

  • 如果数据模型已经填充了很多行并且运行迁移需要很长时间,那么拥有 NullBooleanField 不是一个好主意吗?你不能也把 `null` 当作 `False` 吗? (2认同)

Nit*_*ain 9

Django 2.1null=TrueBooleanField. 使用NullBooleanField现在气馁

所以使用,x = BooleanField(null=True)而不是x = NullBooleanField()

这是一个简单的用例:如果您只需要记录“是”或“否”状态,请使用不带 null 的布尔值。但是,如果您想拥有 3 个条件,例如“是”、“否”和“不知道”,请将其与null=True.