Django post_save предотвращает рекурсию без переопределения модели save()

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

Что ж, я считаю, что есть веские основания не использовать save()— например, я добавляю временное приложение, которое обрабатывает данные о выполнении заказов полностью отдельно от нашей модели Order.

Остальная часть фреймворка пребывает в блаженном неведении о приложении исполнения, а использование перехватчиков post_save изолирует весь код, связанный с исполнением, от нашей модели заказа.

Если мы откажемся от службы выполнения, в нашем основном коде ничего не изменится. Мы удаляем приложение выполнения, и все.

Итак, существуют ли какие-либо достойные методы, чтобы сигнал post_save не запускал один и тот же обработчик дважды?

32
задан Yuji 'Tomita' Tomita 31 May 2012 в 19:27
поделиться