gpt4 book ai didi

mysql - Django 删除导致完整性错误(models.set_null)

转载 作者:可可西里 更新时间:2023-11-01 09:02:17 25 4
gpt4 key购买 nike

我有两个模型

class Foo(models.Model):
field1 = models.Charfield()
....
....

class Foo1(models.Model):
field1 = models.ForeignKey(Foo, null=True, blank=True, on_delete=models.SET_NULL)
...
...

当我尝试删除 Foo 对象时,它会导致完整性错误。

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

我正在使用 mysql 后端和 Django 1.7(我知道这是旧的,我正在尝试将它升级到 LTS 版本。)

编辑:如果您需要更多信息,请发表评论。我会在这里更新它。

Foo.objects.get(id=foo_id).delete() 

这是行不通的。导致上述错误。我刚刚确认mysql Engine是Innodb。

最佳答案

我遇到了同样的问题,无法理解为什么 SET_NULL 没有按预期工作。我最终通过进入 django shell (python manage.py shell) 并在删除目标对象之前断开主机对象来解决这个问题。
在您的示例中,它映射如下(假设 models.py 在目录下..):

% python manage.py shell

>> from catalog.models import Foo1
>> for obj in Foo1.objects.all():
>> ... obj.field1 = None
>> ... obj.save()

然后,您可以安全地删除表,例如:

DELETE FROM catalog_Foo

BR,
沙哈尔。

关于mysql - Django 删除导致完整性错误(models.set_null),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37889010/

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