Выборочное попадание сигнала обновления для модели
У меня есть модель, называемая как узлы:
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. Как мне убедиться, что статус всех зависимых узлов изменяется в правильной последовательности и способом?