sch*_*eck 2 django django-signals
我创建了一个信号:
sig_published = Signal()
Run Code Online (Sandbox Code Playgroud)
此信号放在signals.py中,我在models.py中导入:
from signals import sig_published
Run Code Online (Sandbox Code Playgroud)
在模型文件的页脚中,我将它连接到一个函数,为了测试目的,只打印出一个调试字符串:
def update_mode(sender, **kwargs):
print "UPDATING"
sig_published.connect(update_mode, sender=MyModel)
Run Code Online (Sandbox Code Playgroud)
现在,在我的save() - Method中,我尝试发送一个信号:
sig_published.send(sender=self)
Run Code Online (Sandbox Code Playgroud)
但它没有打印出任何东西.如果我尝试像pre_save这样的内置信号:
pre_save.connect(update_mode, sender=MyModel)
Run Code Online (Sandbox Code Playgroud)
有用.有任何想法吗?
您发出的信号与sender您的模型实例相同,而在连接中您则与MyModel 类匹配.这两个不是同一个对象,所以你的接收器忽略了信号.您可以与pre_save发射代码进行比较,它使用的是类,而不是实例.
| 归档时间: |
|
| 查看次数: |
926 次 |
| 最近记录: |