Существует множество сообщений Stack Overflow о рекурсии с использованием сигнала post_save
, на которые подавляющее большинство комментариев и ответов: «почему бы не переопределить save()» или сохранение, которое срабатывает только при created == True
.
Что ж, я считаю, что есть веские основания не использовать save()
— например, я добавляю временное приложение, которое обрабатывает данные о выполнении заказов полностью отдельно от нашей модели Order.
Остальная часть фреймворка пребывает в блаженном неведении о приложении исполнения, а использование перехватчиков post_save изолирует весь код, связанный с исполнением, от нашей модели заказа.
Если мы откажемся от службы выполнения, в нашем основном коде ничего не изменится. Мы удаляем приложение выполнения, и все.
Итак, существуют ли какие-либо достойные методы, чтобы сигнал post_save не запускал один и тот же обработчик дважды?