gpt4 book ai didi

django - OneToOne Model 两种方式删除Cascade

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

我有两个模型:

   class A(models.Model):
name = models.CharField(max_length=50)


def __str__(self):
return "%s the place" % self.name

class B(models.Model):
a = models.OneToOneField(Place,on_delete=models.CASCADE)
name = models.CharField(max_length=50)

我要:

  1. 如果 A 被删除,B 将被删除(有效)
  2. 如果 B 被删除,A 也被删除

最佳答案

我认为您可以使用两个主要选项:

1 - 在模型 B 上创建一个信号 post_delete,这将删除模型 A 上的记录: https://docs.djangoproject.com/en/3.2/ref/signals/#django.db.models.signals.post_delete

2 - 覆盖模型 B 上的删除方法: Override django's model delete method for bulk deletion

正如@iserranoe 在评论中指出的那样,解决方案 2 在删除多个模型时将无法正常工作。因此,为了避免覆盖 Django 默认方法,我强烈建议使用 post_delete 信号

关于django - OneToOne Model 两种方式删除Cascade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52153914/

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