【问题标题】:How to deal with the required value which does not have a default value in Django model如何处理在 Django 模型中没有默认值的所需值
【发布时间】:2015-01-25 17:05:28
【问题描述】:

我的 Django 版本是 1.7。

我有一个名为Booking的模型,它有一个名为is_departure的布尔字段,用于描述预订是出发还是到达。

class Booking(models.Model):
  ...
  is_departure = models.BooleanField()
  ...

当我迁移我的应用程序时,它会返回一个警告,指出is_departure 没有默认值。

但是,我不想为is_departure 添加默认值。这是一个必填值,需要用户填写。我也不想使用 NullBooleanField,因为is_departure 不应该为空。

有什么好的方法可以消除这个警告吗?

【问题讨论】:

  • 为什么不直接设置默认值False?这会对您的业务逻辑产生不利影响吗?我的猜测是否定的。即使最终用户需要选择该值,您仍然可以将该值默认为False
  • @Brandon 好的,我只是想看看是否有比将默认值设置为 False 更明智的方法。
  • 并非如此。如果最初将值设置为 False 以某种方式影响了您的业务逻辑,那么您始终可以使用 NullBooleanField 并将初始值设置为 null。

标签: django django-1.7


【解决方案1】:

问题是,Django 会将什么值作为所有 现有行 的值,这些行现在有一个 is_departure 值,根据你的说法,不能为空,你不能满足这个约束.

如果您仍在开发,那么您可以重置数据库,并且您确实可以使用 BooleanField 而不使用默认值(因为不会有现有行违反此规则)

否则,我会让迁移在现有行上放置一个 is_departure 值(true 或 false),与您的业务逻辑一致

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2018-10-22
    • 2011-09-03
    • 1970-01-01
    • 2015-10-15
    • 2010-10-19
    • 2021-04-03
    相关资源
    最近更新 更多