【发布时间】:2015-03-06 16:12:12
【问题描述】:
在我的 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 迁移错误。你同意?您知道解决方法吗?
【问题讨论】:
-
如果您删除了related_name='+'会发生什么?似乎这会阻止 FK 指向父模型的 PK。此外,看起来错误已被截断 - 它应该说明哪些列失败了,这会有所帮助。
-
你能解决这个问题吗?我遇到了完全相同的问题。在 postgres 中错误地生成了约束(仍然指向旧的引用字段)。
-
@Salvia:我已经回答了我的问题,请看下文。
标签: django foreign-keys migration