【问题标题】:Django South - turning a null=True field into a null=False fieldDjango South - 将 null=True 字段转换为 null=False 字段
【发布时间】:2011-06-13 06:15:53
【问题描述】:

我的问题是,使用 Django South 将 null=True 字段转换为 null=False 字段的最佳做法是什么。具体来说,我正在使用ForeignKey

【问题讨论】:

  • 你知道null=False后外键列的新默认值是什么吗?相反,它对所有人都是一样的,还是需要进行一些特殊的处理来确定它会是什么?会有违约吗?你用的是什么数据库?

标签: python django django-models django-south


【解决方案1】:

你应该先写一个数据迁移:http://south.aeracode.org/docs/tutorial/part3.html 然后进行架构迁移。

【讨论】:

    【解决方案2】:

    如果您想将可为空的 ForeignKey 转换为不可为空的 ForeignKey,那么如果该字段(列)有任何带有 NULL 的行,则可能会出现问题。在这种情况下,您需要删除或修复它们 - 可能使用自定义数据迁移,例如另一个答案中提到的diegueus9

    但是,如果您在该列中没有任何带有 NULL 的行,例如因为您只在将来可能需要它时才设置 null=True,那么您应该能够进行简单的自动模式迁移:

    $ ./manage.py schemamigration myapp remove_null_from_fkey --auto
    (...)
    $ ./manage.py migrate myapp
    

    【讨论】:

      猜你喜欢
      • 2011-04-23
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2011-05-25
      • 2017-03-07
      相关资源
      最近更新 更多