Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 3, 2009 21:55:02

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Потеря сигнала

код:

from django.core.mail import send_mail
from django.db.models.signals import post_save, pre_save

def create_thumbnail(sender, instance, **kwargs):
send_mail('pre', 'Here is the message.', None, ['mail@mail.com'], fail_silently=False)

pre_save.connect(create_thumbnail, sender=New)

def create_thumbnail(sender, instance, **kwargs):
send_mail('before', 'Here is the message.', None, ['mail@mail.com'], fail_silently=False)

post_save.connect(create_thumbnail, sender=New)
И при сохранении инстанса модели срабатывает сигнал который описан последним. То есть приходит письмо с темой письма “before”. Если поменять местами эти обработчики сигналов то приходит одно письмо с темой “after. Вставляю assert в первую функцию то входа туда нет.

Почему не ”ловится" первая функция

Спасибо.

Офлайн

#2 Окт. 3, 2009 23:30:47

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Потеря сигнала

Джанга по дефолту использует weak references для хранения обработчиков сигналов, а у тебя оба обработчика имеют одинаковые названия, т.е. первый удаляется после объявления второго обработчика, т.к. на него никто уже не ссылается. Или переименуй, или weak=False при коннекте.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version