2010-12-09 2 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) 

Теперь в моем Save() - метод, я пытаюсь отправить сигнал:

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 (provision_args = ['instance']) и отправителей соответственно, и это работает. – schneck 2010-12-10 08:12:40

Смежные вопросы