Выборочное попадание сигнала обновления для модели

У меня есть модель, называемая как узлы:

class node(models.Model):
    name = models.CharField(max_length=200)
    status = models.CharField(
       max_length=32,
       choices=[],  # some list of choices
   )
    created_on = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True, primary_key=True)

    def __str__(self):
        return self.name

Узел имеет статус. Могут существовать узлы, которые зависят от статуса конкретного узла. Например: узел B,C зависит от узла A. Узел D зависит от узла B.

У меня есть сигнал post_save, который срабатывает при изменении статуса определенного узла.

Что я хочу: Когда я изменяю статус узла A, статус узлов B и C также должен измениться соответственно. А поскольку узел D зависит от узла B, статус D также должен измениться в соответствии с новым статусом узла B.

Проблема: Сигнал post_save срабатывает каждый раз при изменении любого из этих узлов. Так, например, сигнал update будет подан при изменении статуса узла A. Затем я хочу изменить состояние B и C в этом триггере. Но как только статус B изменится, снова сработает сигнал post_Save, и код даже не дойдет до изменения статуса C. Как мне убедиться, что статус всех зависимых узлов изменяется в правильной последовательности и способом?

Вернуться на верх