gpt4 book ai didi

django - 无法迁移具有外键约束的 Django 模型

转载 作者:行者123 更新时间:2023-12-04 18:04:43 25 4
gpt4 key购买 nike

我有一个带有外键字段的模型。我想删除外键引用。但是,由于以下错误,迁移失败:

Cannot delete or update a parent row: a foreign key constraint fails

我了解发生了什么,但我不知道如何使用 Django 正确解决这个问题。现在(因为我在项目的开始),我手动进入 MySQL 数据库并删除表并重新迁移,就好像这是第一次迁移一样。

有没有办法使用 Django 来解决这个外键约束问题?


我正在使用 Django 1.7
数据库后端是MySQL

编辑 - 迁移前/迁移后的模型

之前:

class Skills(models.Model):
# fields here...

class Project(models.Model):
skills = models.ForeignKey(Skills, verbose_name = "Required Skills", blank = True, null = True)

之后:

class Skill(models.Model):
# fields here...

class Project(models.Model):
skills = models.ForeignKey(Skill, verbose_name = "Required Skills", blank = True, null = True)

我很确定我所做的只是从 Skill 模型中删除了“Plural”。 makemigrations 命令工作正常,但 migrate 命令失败并出现上述错误。


编辑 2

遇到同样的错误:

Cannot drop column 'skills_id': needed in a foreign key constraint 'projects_project_skills_id_4cc7e00883ac4de2_fk_projects_skill_id'

这次我从模型 Project 中删除了字段 skill

最佳答案

我使用的一个小技巧:

  • 添加一个迁移操作,首先将字段更改为 IntegerField,然后再执行其他操作,即

操作 = [
迁移.AlterField(
model_name='projects_project',
名字='技能',
字段=models.IntegerField(默认=0)
),
..... 在此之后的其他迁移条目。
]

关于django - 无法迁移具有外键约束的 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com