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

6 投票
2 回答
3345 浏览
提问于 2025-04-16 10:23

我想问的是,在使用Django South的时候,怎样才能把一个设置为null=True的字段改成null=False的字段,最好的做法是什么?具体来说,我是在处理一个ForeignKey字段。

2 个回答

3

如果你想把可为空的外键变成不可为空的外键,但如果你在这个字段(列)中有任何行是NULL,那就会有点麻烦。在这种情况下,你需要删除这些行或者修复它们——可能需要进行一些自定义的数据迁移,就像diegueus9在其他回答中提到的那样。

不过,如果你在这个列中没有任何NULL的行,比如说你之前把null=True设置成可为空只是为了将来可能用到,那么你就可以简单地进行一次自动的数据库结构迁移:

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

你应该先进行数据迁移,具体可以参考这个链接:http://south.aeracode.org/docs/tutorial/part3.html,然后再进行模式迁移。

撰写回答