Django South - 将 null=True 字段转换为 null=False 字段

发布于 10-13 03:01 字数 130 浏览 8 评论 0原文

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

My question is, what is the best practice for turning a null=True field into a null=False field using Django South. Specifically, I'm working with a ForeignKey.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

枕花眠2024-10-20 03:01:11

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

You should write first a data migration: http://south.aeracode.org/docs/tutorial/part3.html
and then make the schemamigration.

仄言2024-10-20 03:01:11

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

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

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

If you want to turn nullable ForeignKey into non-nullable one, then it can be problematic if you have any rows with NULL for that field (column). In such case you need to either remove or fix them - possibly with custom data migration, like diegueus9 mentioned in the other answer.

But if you don't have any rows with NULL in that column, e.g. because you put that null=True only in case you might need it in the future, then you should be able to do a simple automatic schema migration:

$ ./manage.py schemamigration myapp remove_null_from_fkey --auto
(...)
$ ./manage.py migrate myapp
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文