Есть ли способ, которым я могу запретить пользователю удалять последний объект определенного типа (т. Е. Последнюю строку в таблице)? Они должны по-прежнему удалять такой объект в целом, но необходимо обеспечить, чтобы в этом конкретном случае всегда оставалась по крайней мере одна запись - по крайней мере одна запись, связанная с пользователем.В администраторе Django, как предотвратить удаление последнего объекта типа
Я попытался переопределить функцию удаления модели:
def delete(self, *args, **kwargs):
others = Presentation.objects.filter(user=self.user).exclude(pk=self.pk)
if len(others) < 1:
pass
else:
super(Presentation, self).delete(*args, **kwargs)
Это работает, но пользователь сказал, что удаление было на самом деле успешным. Я бы предпочел, чтобы сообщение об ошибке отображалось, например, при завершении проверки. Однако валидация применяется только к сохранению, насколько я могу судить.
Это не сработало. 'clean()', по-видимому, вызывается при сохранении, но не при удалении. – pholz
Да, это имеет смысл. Нет причин чистить что-либо при удалении. Виноват. –
Я обновил свой ответ –