我创建了一个信号:
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)
它有效。有什么想法吗?
答案 0 :(得分:5)
您发出的信号sender
等于您模型的实例,而在连接中您则与MyModel
类匹配。这两个不是同一个对象,所以你的接收器忽略了信号。您可以与pre_save
emitting code进行比较,它使用的是类,而不是实例。