Django South - 将 null=True 字段转换为 null=False 字段
我的问题是,使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该首先编写数据迁移: 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.
如果您想将可为空的foreignkey转换为不可为空的foreignkey,那么如果该字段(列)有任何带有NULL的行,则可能会出现问题。在这种情况下,您需要删除或修复它们 - 可能使用自定义数据迁移,例如其他答案中提到的diegueus9。
但是,如果您在该列中没有任何带有 NULL 的行,例如,因为您只在将来可能需要它时才将 null=True 设置为 True,那么您应该能够执行简单的自动模式迁移:
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: