Вы хотите заменить логи c оригинального метода (в этом случае вместо обновления удалять) не до расширить it.
Сигналы должны расширяться основной метод logi c, не заменять его.
В pre_
сигналов - запустить некоторые дополнительные логики c перед действием (возможно, даже изменить объект). В post_
сигналы - запустить дополнительные логи c после основного действия. Но основное действие все еще выполняется - и оно должно - оно было вызвано по праву в коде - сигналы не должны его заменять.
Как и метод расширения в модели: вы добавите немного logi c до того, как или после вызова super().method()
- так работают сигналы.
В случае замены метода logi c на другой - при переопределении метода super()
, скорее всего, вызываться не будет, поэтому никаких исходных действий не будет. Выполнено.
Таким образом, чтобы заменить delete()
пользовательскими логами c, вы можете переопределить метод delete()
обеих моделей и использовать собственный QuerySet для модели с переопределенным методом delete()
, поэтому при вызове delete()
либо для экземпляра модели, либо для QuerySet - вместо этого будет выполнено обновление.
Ссылка на дополнительный код, где выполняется удаление QuerySet :
pre_delete
сигнал отправляется delete_batch
выполняется post_delete
сигнал отправляется