在模型中,我有一个映射到 CHOICES
元组的 IntegerField
。该字段的要求已更改为更新该元组中的选项将需要过于频繁的维护,因此我决定将其更改为 CharField
有没有办法可以在迁移中执行此操作,或者创建一个新列,使用适当的值更新并删除旧列会更好吗?
最佳答案
您已经更改了架构,因此您肯定需要进行架构迁移,Django 会使用 makemigrations
命令为您完成此操作。
但是由于您还更改了列的类型,其中填充了整数,现在应该转换为字符,Django 不会自动为您执行此操作,您需要编写 Data migrations .
根据我的经验,最好生成多个迁移;创建一个新的 CharField,然后通过 RunPython 写入这个新列。然后,运行第二次迁移,删除原始 IntegerField 并将新的 CharField 列重命名为原始列。 (我猜这是你自己建议的)
关于python - Django 迁移 - 将模型从 Int 更改为 CharField 并从选择选项中预填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39497266/