Игнорирование изменений отношений 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()
Вернуться на верх