Djangoに次のようなものがあるとしましょう:
class PublicObject(models.Model):
class Meta:
abstract = True
title = models.CharField()
menu_link = models.ForeignKey('MenuLink')
class MenuLink(models.Model):
title = models.CharField()
parents = models.ManyToManyField('self')
class Page(PublicObject):
page fields...
class BlogEntry(PublicObject)
blog entry fields...
私が欲しいのは、ページまたはブログエントリを削除すると、対応するメニューリンクも削除されることです。DRYの原則を破ることなくDjangoでこれを行うにはどうすればよいですか? 言及する必要があります: - ModelAdmin の model_delete のオーバーライドは機能しません。これは、この関数が Django のアクション メニューからの一括削除で呼び出されないためです。- pre_delete モデル信号を使用すると、モデルの名前が必要になるため機能しませんが、抽象モデル名には機能しません。これは、sender=Page または sender=BlogEntry でのみ機能し、sender=PublicObject では機能しません。この信号をすべてのモデルに登録し、単に送信者のモデルを確認すると、パフォーマンスが大幅に低下しますか?