Пользовательский сигнал не работает - PullRequest
2 голосов
/ 10 декабря 2010

Я создал сигнал:

sig_published = Signal()

Этот сигнал помещается в файл signal.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)

, это сработает.Есть идеи?

1 Ответ

5 голосов
/ 10 декабря 2010

Вы излучаете сигнал с sender, равным экземпляру вашей модели , в то время как в соединении вы сравниваете с MyModel class . Эти два объекта не являются одинаковыми, поэтому ваш приемник игнорирует сигнал. Вы можете сравнить с pre_save испускающим кодом , что он использует класс, а не экземпляр.

...