IntegrityError当删除模型实例

我有两个模型,如IntegrityError当删除模型实例

class A(models.Model): 

title = models.CharField(max_length=255)

class B(models.Model):

recommendation = models.ForeignKey(A, related_name="+")

title = models.CharField(max_length=255)

当我删除了一个模型的实例,我得到的是这样的:

IntegrityError: update or delete on table "myapp_a" violates foreign key constraint "myapp_relate_recommendation_id_4a7c5340_fk_myapp_a_id" on table "myapp_b" 

Detail: Key (id)=(27527) is still referenced from table "myapp_b".

我想不通为什么它会发生,我认为FK应该被默认删除。

回答:

尝试添加on_delete参数传送给recommendation领域:

models.py

class A(models.Model): 

title = models.CharField(max_length=255)

class B(models.Model):

recommendation = models.ForeignKey(A, related_name="+", on_delete=models.CASCADE)

title = models.CharField(max_length=255)

运行python manage.py shell

>>> from abtest.models import A, B 

>>> a = A(title="test A title")

>>> a.save()

>>> a

<A: A object (1)>

>>> b = B(title="test B title", recommendation=a)

>>> b.save()

>>> b

<B: B object (1)>

>>> b.recommendation

<A: A object (1)>

>>> a.delete()

(2, {'abtest.B': 1, 'abtest.A': 1})

您可以了解更多关于Django的如何处理外来键删除here。

以上是 IntegrityError当删除模型实例 的全部内容, 来源链接: utcz.com/qa/265668.html

回到顶部