2

タイプのオブジェクトを追加または削除するときFooは、同じ計算を行う必要があります。Fooモデルのオブジェクトの追加/削除を検出するにはどうすればよいですか? 例えば:

from django.db import models

class Foo(models.Model):
    ...
    def save(self):
        #do some processing

    def delete(self):
        #do some processing

これら 2 つの方法でコードの重複を避けることはできますか?

信号を使用して、次のように実装できます

from django.db import models 
from django.db.models.signals import post_save, post_delete

class Foo(models.Model):
    ...
    ...

def foo_handler(sender, **kwargs):    
    #do some processing 

post_save.connect(foo_handler, sender=Foo)
post_delete.connect(foo_handler, sender=Foo)    
4

1 に答える 1

5

モデルが保存または削除される前または後に (必要に応じて他の場合にも)、Django のシグナルを使用して特定の関数を呼び出す必要があります。ここで関連ドキュメントをチェックしてください: http://docs.djangoproject.com/en/dev/topics/signals/

モデル メソッドをオーバーライドするdelete()と、クエリセットからオブジェクトを一括で削除するときに呼び出されません (こちらを参照)。

を使用して、複数の信号を同じメソッドに接続できますsignal.connect

于 2011-02-02T07:11:51.447 に答える