2015-05-21 3 views
0

У меня есть отдельный модуль python для приемников сигналов, он называется signals.py и импортирован в ready() метод моего AppConfig.Несколько приемников сигналов Django в одном модуле

В этом модуле я реализовал post_save и post_delete сигналов приемников для конкретной модели и зарегистрировал их с помощью декоратора:

@receiver(post_save, sender=MyModel) 
def generate_smth(sender, instance, created, **kwargs): 
    ... 

И это прекрасно работает. Но, когда я добавил к signals.py приемникам же сигналы таким же образом, но из различных конкретных моделей:

@receiver(post_save, sender=AnotherModel) 
def generate_smth(sender, instance, created, **kwargs): 
    ... 

Моих функции остановленных для приема сигналов. Но если я перемещаю приемники в отдельные модули python mymodel_signals.py и anothermodel_signals.py и импортирую оба модуля в ready(), тогда все они снова работают.

Почему невозможно сохранить приемники в одном модуле?

ответ

0

Вы хотите, чтобы обе функции имели одинаковое поведение? Если да, вы можете сделать:

def do_smth(sender, instance, created, **kwargs): 
    ... 

@receiver(post_save, sender=MyModel) 
def generate_smth(sender, instance, created, **kwargs): 
    do_smth(sender, instance, created, **kwargs) 

@receiver(post_save, sender=AnotherModel) 
def generate_another_smth(sender, instance, created, **kwargs): 
    do_smth(sender, instance, created, **kwargs) 
+0

Нет, мои функции делают разные вещи. Мой вопрос не в том, как реализовать описанное поведение, а о том, почему такое поведение не работает :) –

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