Найти - Пользователи
Полная версия: Потеря сигнала
Начало » Django » Потеря сигнала
1
romankrv
код:
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 в первую функцию то входа туда нет.

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

Спасибо.
poltergeist
Джанга по дефолту использует weak references для хранения обработчиков сигналов, а у тебя оба обработчика имеют одинаковые названия, т.е. первый удаляется после объявления второго обработчика, т.к. на него никто уже не ссылается. Или переименуй, или weak=False при коннекте.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB