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都会打印一次,但每当我使用管理界面时,它就会打印两次。这可能是因为我也导入了里面的模型admin.py

是否有解决方法,以便我可以从管理界面保存 Event 对象而无需post_save触发两次?

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 回答