У меня есть модель Django, которая содержит настройки ядра для функции приложения. Вы никогда не должны удалять эту модель. Я пытаюсь обеспечить применение этого приложения. Я отключил функцию удаления в администраторе, а также отключил метод удаления на модели, но у QuerySet есть собственный метод удаления. Пример:
MyModel.objects.all()[0].delete() # Overridden, does nothing
MyModel.objects.all().delete() # POOF!
По иронии судьбы, в документах Django сказано, что это говорит о том, почему delete() - это метод в QuerySet, а не Manager:
Это механизм безопасности, который предотвращает случайное обращение к Entry.objects.delete() и удаление всех записей.
Вопрос о том, как включить .all()
, - это "механизм безопасности", может быть, как минимум, сомнительным. Вместо этого это эффективно создает бэкдор, который не может быть закрыт обычными средствами (переопределение менеджера).
Кто-нибудь знает, как переопределить этот метод на чем-то в качестве ядра QuerySet без обезвреживания исправления источника?