Итак, каждая модель поставляется с некоторыми обычно используемыми функциями, такими как save и delete.Django disable model delete
Удалить часто переопределяется, чтобы установить логическое поле, такое как is_active
, на false, таким образом данные не теряются. Но иногда существует модель, которая имеет информацию, которая когда-то создавалась, всегда должна существовать и даже не быть «неактивной». Мне было интересно, что такое лучшая практика для обработки этого метода delete
модели будет?
сделать это просто бесполезно:
def delete(self):
return False
но это только кажется странным. Возможно, есть опция Meta
, чтобы отключить удаление? есть ли «хороший» способ сделать это?
Администратор Django не имеет к этому отношения. Я знаю, что я не могу избавиться от SQL 'DELETE', но я хочу удалить его из модели и запроса. Единственные люди, которые должны иметь возможность удалить эти экземпляры, - это те, у которых есть доступ к фактической базе данных, но те, у кого есть доступ к запросу django, не должны быть в состоянии –
. Тогда да, переопределите delete на модели и создайте настраиваемый набор запросов с настраиваемым менеджером чтобы отключить это. Вы также хотели бы просмотреть связанные запросы, которые вы можете получить, пройдя отношения. –
А также, если у людей есть доступ к приложению django, разве у них нет доступа к базе данных? Я бы ограничил удаление на уровне БД только администраторами или чем-то еще. –