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)

现在,在我的 save() 方法中,我尝试发送一个信号:

sig_published.send(sender=self)

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

pre_save.connect(update_mode, sender=MyModel)

有用。有任何想法吗?

4

1 回答 1

5

您发出的信号sender等于模型的instance,而在 connect 中,您正在匹配MyModel class。这两个不是同一个对象,因此您的接收器会忽略信号。您可以与pre_save发出代码进行比较,它使用一个类,而不是一个实例。

于 2010-12-09T22:59:41.263 回答