5

個々のファイルにモデルがあります。

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

__init__.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が 1 回出力されますが、管理インターフェイスを使用するたびに 2 回出力されます。これは、内部のモデルもインポートしているためかもしれませんadmin.py

post_save2 回起動することなく、管理インターフェイスから Event オブジェクトを保存できるようにするための回避策はありますか?

4

2 に答える 2

4

それはおそらく Django/Python のインポートの愚かさによるものです。あなたがdispatch_uid持っているようにする必要がありますが、ハンドラー自体ではなく、デコレーターへの引数である必要があると思います。

于 2012-01-10T21:44:31.313 に答える
0

__init__.pyシグナル処理をモデルではなくビューに移動することで、なんとか修正できました__init__.py

于 2012-01-10T15:04:36.483 に答える