2012-01-10 8 views
5

を用いた場合であっても保存いずれかの二回受信:__init__.pyPost_saveは、私は、個々のファイルで私のモデルを持っているdispatch_uid

models 
\ 
|__init__.py 
|event.py 
|a_thing.py 
|... 

を、私は各モデルをインポートし、その後、私は、信号処理を設定します。

Eventモデルの場合は、post_saveの取り扱いが必要です。

これは__init__.pyの短縮バージョンです:

from django.db.models.signals import post_save 
from django.dispatch import receiver 

from core.models.event import Event 

# Event 
@receiver(post_save, sender = Event) 
def event_post_save(sender, dispatch_uid = 'nope', **kwargs): 
    print kwargs.get('created') 
    print '------' 

私はコンソール経由でEventを保存するたびにpost_saveのメッセージが一度に印刷されているが、私は管理インタフェースを使用するとき、それは二回印刷します。これは、admin.pyの中にモデルをインポートするためかもしれません。

post_saveを2回起動せずに管理インターフェイスからイベントオブジェクトを保存できるようにするための回避策はありますか?

答えて

0

私は私はそれはジャンゴ/ Pythonのimport愚かさから、おそらくの見解__init__.py代わりに、モデルの__init__.py

4

に扱う信号を動かし、それを修正するために管理。あなたはあなたのようにdispatch_uidが必要ですが、私はデコレータの引数でなければならないと思います。ハンドラ自体ではありません。

関連する問題