在模型中,我有IntegerField
映射到CHOICES
元组。该字段的要求已更改为更新该元组中的选项需要过于频繁的维护,因此我决定将其更改为CharField
我是否可以在迁移中执行此操作,或者创建新列,使用适当的值进行更新并删除旧列更好?
答案 0 :(得分:1)
您已经更改了Schema,因此您肯定需要一个Schema迁移,Django将使用makemigrations
命令为您执行此操作。
但是既然你也在改变一个列的类型,其中填充了整数,现在应该转换成字符,Django不会自动为你做这个,你需要写Data migrations。
根据我的经验,最好生成多次迁移;一个创建一个新的CharField,然后通过RunPython写入这个新列。然后,运行第二次迁移,删除原始IntegerField,并将新CharField列重命名为原始列。 (我猜这是你自己建议的)
答案 1 :(得分:0)
为了更清楚,您需要进行3次迁移。
以下是我在进行首次数据迁移之前所遵循的示例。