自定义信号不起作用
问题描述:
我创建了一个信号:自定义信号不起作用
sig_published = Signal()
这个信号被放置在signals.py,我在我的models.py导入:
from signals import sig_published
,并在模型文件的页脚,我将它连接到用于测试目的只是打印出调试字符串:
def update_mode(sender, **kwargs):
print "UPDATING"
sig_published.connect(update_mode, sender=MyModel)
现在,在我的保存()函数 - 方法,我尝试发送信号:
sig_published.send(sender=self)
但它没有打印出任何东西。如果我尝试像pre_save一样的内置信号:
pre_save.connect(update_mode, sender=MyModel)
它的工作原理。有任何想法吗?
答
你发射具有sender
等于模型的实例信号,而在连接你的匹配对MyModel
类。这两个不是同一个对象,所以你的接收器会忽略这个信号。你可以比较pre_save
emitting code,它使用一个类,而不是一个实例。
+0
哦,我的,就是这样,谢谢。我将听众更改为sig_published = Signal(offering_args = ['instance'])和发送者,并且这是有效的。 – schneck 2010-12-10 08:12:40
你也可以告诉我们你的`save`方法吗? – 2010-12-09 22:21:28