2010-12-09 69 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