Обновление поля модели Django при действиях, происходящих в другой модели

Я хочу внести изменения в экземпляр модели A, когда второй экземпляр модели B сохраняется, обновляется или удаляется. Все модели находятся в одном приложении Django. Каков будет оптимальный способ сделать это?

  1. Следует ли мне использовать сигналы?
  2. Переопределить методы по умолчанию [save, update, delete]?
  3. Что-то еще?

Документация Django предупреждает:

Где возможно, следует выбирать прямой вызов кода обработки, а не диспетчеризацию через сигнал.

Может ли кто-нибудь уточнить это утверждение?

Влияние обработчиков сигналов на производительность, конечно, зависит от их функциональности. Но вы должны помнить о том, что они выполняются синхронно при подаче сигнала, поэтому, если в обработчиках происходит много действий (например, много вызовов базы данных), выполнение будет отложено.

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