自定义信号不起作用

时间:2010-12-09 22:13:19

标签: django django-signals

我创建了一个信号:

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)

现在,在我的save() - Method中,我尝试发送信号:

sig_published.send(sender=self)

但它不打印任何东西。如果我尝试像pre_save这样的内置信号:

pre_save.connect(update_mode, sender=MyModel)

它有效。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您发出的信号sender等于您模型的实例,而在连接中您则与MyModel 匹配。这两个不是同一个对象,所以你的接收器忽略了信号。您可以与pre_save emitting code进行比较,它使用的是类,而不是实例。