てきとう

ワーワーゆうとります

django シグナル受け取るよー

最近djangoやってます。pythonデビューです。

djangoのシグナルは、CakePHPで言えばコールバックメソッドのafterDelete()とかそんなのだ。
モデルでいろいろ動いたよ!というシグナルを送ってくれるので、それを受け取って動けばいいじゃんという。

例は、Hogeのモデルでdeleteした後にMogeモデルのhoge_idが同じデータを消したいの巻

・model.py

from django.db import models
from django.db.models import signals #シグナルよみこみ

#まあなんかいろいろモデルの設定があって

# delete後に呼びたい処理
# instanceにはdeleteされたhogeのデータ
def hoge_delete(sender, instance, **kwargs):
    moge = Moge.objects.filter(hoge_id=instance.id)
    moge.delete()

signals.post_delete.connect(hoge_delete, sender=Hoge)

post_deleteのほかにもpost_saveとかあります。
引数は、呼びたいdefと、どのモデルの時に呼ぶか、です。

そしてブログに通信簿がつきました
というか前にやって貼るの忘れていました。
f:id:ym1173:20090703130929p:image
いろいろと間違っているけど気楽だけなら5くらい取れそうなのに。