首页 文章

南:为唯一且不为空的列运行迁移

提问于
浏览
15

使用South / Django,我遇到了一个问题,我正在尝试为数据库中现有行的模型添加 UNIQUENOT NULL 列 . South提示我为列指定默认值,因为它是 NOT NULL . 但由于它也有 UNIQUE 约束,我可以't add a default to the field in models.py, nor can I specify a one-off value because it'在所有行上都是相同的 .

我能想到解决这个问题的唯一方法是首先创建一个可为空的列,应用迁移,运行脚本以使用该列中的唯一值填充现有行,然后添加另一个迁移以将 UNIQUE 约束添加到该列柱 .

但有没有更好的方法来完成同样的事情?

1 回答

  • 13

    是的,这是你应该采取的方法 . 您应该为此进行schemamigration - > datamigration - > schemamigration . 不幸的是,如果在SQL中无法做到这一点,南方也无法做到这一点 .

相关问题