を使用してオブジェクトを削除するには、Djangoのを強制する方法:次のように私は、オブジェクトモデルを持っている多重継承
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オブジェクトを作成します。 1つのAddressオブジェクトには、複数の企業がポイントしている場合があります。
しかし、Committee.objects.delete()を実行すると、委員会オブジェクトは削除されますが、関連するCorporationオブジェクトやAddressオブジェクトは削除されません。
委員会オブジェクトを削除すると、別のオブジェクトがそれを指していない場合は、関連付けられたAddressオブジェクトを削除します。私はまた、別のオブジェクトがそれを指していない場合、関連するCorporationオブジェクトを削除したいと思う。
この条件付きカスケード削除を実行するにはどうすればよいですか?
ありがとうございます。私はあなたの例でForeignKey()対ManytoMany()を使用することに気付きます。複数のオブジェクトがそのオブジェクトを指している場合、Addressオブジェクトを削除しますか? – book
ManyToMany関係とカスケード削除の仕組みを理解しなければならないと思います。私はあなたに良い理解を与える記事で答えを更新しました。 – kt14