Python 如何从ForeignKey转变为Django的ManyToManyField?

Python 如何从ForeignKey转变为Django的ManyToManyField?,python,django,Python,Django,我正在尝试将一个变量从ForeignKey更改为ManyToManyField。尝试执行命令迁移时出现以下错误: ValueError:无法将字段videos.Video.machine更改为videos.Video.machine-它们是不兼容的类型(不能更改M2M字段或从M2M字段中更改,也不能通过M2M字段上的=添加或删除) 如何解决这个问题呢?这里有两种方法(我可以马上想到): 创建临时字段以存储videos.Video.machine的当前数据,删除videos.Video.machi

我正在尝试将一个变量从ForeignKey更改为ManyToManyField。尝试执行命令迁移时出现以下错误:

ValueError:无法将字段videos.Video.machine更改为videos.Video.machine-它们是不兼容的类型(不能更改M2M字段或从M2M字段中更改,也不能通过M2M字段上的=添加或删除)


如何解决这个问题呢?

这里有两种方法(我可以马上想到):

  • 创建临时字段以存储videos.Video.machine的当前数据,删除videos.Video.machine字段,将videos.Video.machine添加回m2m字段,将临时字段中的数据迁移到此新字段中,然后删除临时字段
  • 创建一个新字段,即videos.Video.machines(m2m),将当前字段videos.Video.machine复制到其中,然后删除videos.Video.machine字段

  • 我个人会选择第二个,因为它不仅更简单,而且命名更有意义

    您可以添加m2m字段,执行自定义迁移,然后在另一个迁移中删除旧字段,并可能重命名新字段。