14

Django は、ドキュメント内の外部キーを使用してカスケード削除を設定またはオーバーライドする方法を示しています。

model = models.ForeignKey(MyModel, null = True, on_delete = models.SET_NULL)

しかし、この効果を逆にしたい場合はどうでしょうか? fk モデルを削除すると、このモデルが削除されるようにしたい場合はどうすればよいでしょうか?

ありがとう

4

2 に答える 2

2

あなたが見ている機能は、ORM やデータベースの概念ではないと思います。何かが削除されたときにコールバックを実行したいだけです。

post_delete シグナルを使用して、そこにコールバックハンドラを追加します

from django.db.models.signals import post_delete
from django.dispatch import receiver
from myapp.models import MyModel

@receiver(post_delete, sender=MyModel)
def my_post_delete_callback(sender, **kwargs):
    #Sender is the model which when deleted should trigger this action
    #Do stuff like delete other things you want to delete
    #The object just deleted can be accessed as kwargs[instance]
于 2012-09-29T20:04:41.130 に答える