Документы Django по сигналам значительно улучшились, поэтому посмотрите, если вы этого еще не сделали. Процесс довольно прост.
Сначала создайте свой сигнал (providing_args
позволяет вам указать аргументы, которые будут переданы при отправке вашего сигнала позже):
import django.dispatch
my_signal = django.dispatch.Signal(providing_args=["first_arg", "second_arg"])
Во-вторых, создайте функцию получателя:
from django.dispatch import receiver
@receiver(my_signal)
def my_callback(sender, first_arg, second_arg, **kwargs):
# do something
Наконец, отправьте свой сигнал куда угодно в своем коде (self
, поскольку отправитель применим только в вашем классе модели. В противном случае просто передайте имя класса модели):
my_signal.send(sender=self, first_arg='foo', second_arg='bar')