Django迁移在更改to_field时失败

时间:2015-03-06 16:12:13

标签: django foreign-keys migration

在我的Django模型中,我有一个像这样的字段(简化):

category = models.ForeignKey(EnumValue, to_field='code', related_name='+', verbose_name="Kategorie", db_column='Kategorie')

然后我删除了to_field参数,将外键转换回指向主键的外键。

Django迁移仅为此更改生成了一个简单的AlterField,似乎不会修改外键或正确转换现有数据。无论如何,我在应用迁移时收到此错误消息:

pymysql.err.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails

我无法在网络上找到有关此特定案例的任何内容。我会说这是一个Django迁移错误。你同意吗?你知道解决方法吗?

1 个答案:

答案 0 :(得分:1)

以下对我有用:

  1. 添加第二个字段,指向引用类的主键。
  2. 在迁移文件中添加一个python例程,用于将引用从现有字段传输到新字段。
  3. 在第二次迁移中,删除旧字段并重命名新字段。