【发布时间】:2016-08-08 16:05:40
【问题描述】:
我有一个对象模型如下:
class Corporation(models.Model):
corp_id = models.AutoField(primary_key=True)
original_name = models.CharField(max_length=1000, blank=True, null=True)
address = models.ManyToManyField(Address, related_name='corp_address')
class Person(models.Model):
person_id = models.AutoField(primary_key=True)
person_address = models.ManyToManyField(Address, related_name='person_address')
class Address(models.Model):
address1 = models.CharField(max_length=500, blank=True, null=True)
address2 = models.CharField(max_length=500, blank=True, null=True)
city = models.CharField(max_length=100, blank=True, null=True)
state = models.CharField(max_length=100, blank=True, null=True)
zipcode = models.CharField(max_length=20, blank=True, null=True)
country = models.CharField(max_length=100, blank=True, null=True)
class Committee(Corporation):
name = models.CharField(blank=True, max_length=200, null=True)
industry = models.CharField(blank=True, max_length=100, null=True)
当我创建一个委员会对象时,我创建了一个公司和一个地址对象。一个 Address 对象可能有多个 Corporation 指向它。
但是,当我执行 Committee.objects.delete() 时,Django 会删除委员会对象,但不会删除相关的 Corporation 或 Address 对象。
当我删除一个委员会对象时,如果另一个对象没有指向它,我想删除关联的地址对象。如果另一个对象不指向它,我也想删除关联的 Corporation 对象。
我该如何进行这种有条件的级联删除?
【问题讨论】:
标签: python django multiple-inheritance