Игнорирование изменений отношений m2m в сигнале post_save в django
У меня есть вопрос относительно сигналов django.
Допустим, у меня есть такие модели:
class Parent(models.Model):
parent_name = (...)
class Children(models.Model):
child_name = (...)
parent = models.ForeignKey(Parent, on_delete=models.CASCADE, related_name='children')
Допустим, я подключил этот сигнал к сигналу post_save
класса Parent
:
def handle(*args, **kwargs):
(...)
post_save.connect(handle, sender=Parent)
Теперь, если я создам нового ребенка:
some_parent = Parent.objects.get(...)
new_child = Child.objects.create(
...,
parent = some_parent
)
Хотя я просто создаю новый Child
, Django пошлет сигнал post_save
от some_parent
и таким образом будет вызван handle
. Есть ли способ игнорировать этот сигнал? Что-то похожее на это:
def handle(*args, **kwargs): if <some_condition>: # проверить, посылается ли сигнал только потому, что создан новый ребенок. # игнорировать сигнал return # Делаем все как обычно ...
Конечно, первыми аргументами обработчика post_save являются instance
и created
.
@receiver(models.signals.post_save, sender=Parent)
def handle(instance, created, **kwargs):
if created:
return
do_thingamy()