2010-12-09 73 views
2

我创建了一个信号:自定义信号不起作用

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) 

它的工作原理。有任何想法吗?

+0

你也可以告诉我们你的`save`方法吗? – 2010-12-09 22:21:28

回答

5

你发射具有sender等于模型的实例信号,而在连接你的匹配对MyModel类。这两个不是同一个对象,所以你的接收器会忽略这个信号。你可以比较pre_save emitting code,它使用一个类,而不是一个实例。

+0

哦,我的,就是这样,谢谢。我将听众更改为sig_published = Signal(offering_args = ['instance'])和发送者,并且这是有效的。 – schneck 2010-12-10 08:12:40