OperationalErrors - 没有这样的列django - ForeignKey

时间:2017-11-02 08:53:48

标签: django model django-migrations

我的模型中有这个字段:

customer = models.ManyToManyField(Customer)

由于一些变化,我意识到我必须改变与此的关系:

customer = models.ForeignKey(Customer)

我曾尝试一次又一次地执行 makemigrations app_name migrate ,但仍会产生错误。我也尝试删除管理站点中模型的现有数据。

1 个答案:

答案 0 :(得分:1)

如果没有数据丢失,则无法从ManyToManyField到ForeignKey进行简单的更改。迁移问题可以通过将不可能的迁移拆分为较小的迁移来解决。例如如果数据很重要

A)数据丢失:

  • 删除ManyToManyField
  • makemigrations
  • 添加ForeignKey
  • makemigrations

B)部分数据丢失,只有ManyToManyField的第一个元素将被转换为每个对象到ForeignKey:
使用其他名称makemigrationsmakemigrations --empty添加ForeignKey,将其编辑为Data Migration以复制列数据,删除ManyToManyField; makemigrationsmakemigrations --empty,  edit it to rename the field