Вы можете переопределить save () вашего модельного класса (ничего не делать, если self.pk) и удалить (всегда ничего не делать)
Но на самом деле уровень базы данных - самое безопасное место для этого.Например, в PostgreSQL вы могли бы написать два простых правила:
CREATE RULE noupd_myapp_mymodel AS ON UPDATE TO myapp_mymodel
DO NOTHING;
CREATE RULE nodel_myapp_mymodel AS ON DELETE TO myapp_mymodel
DO NOTHING;
В любом случае, администратор ничего не знал бы об этом, поэтому все по-прежнему выглядит редактируемым.Смотрите мой ответ на Вся модель как доступная только для чтения , чтобы попытаться сделать модель доступной только для чтения в админке.Для ваших целей сохраняйте разрешение на добавление как есть и объявляйте все поля только для чтения, когда не добавляете.
РЕДАКТИРОВАТЬ. Одной из причин, по которой переопределение delete () в вашем классе модели является небезопасным, является тот факт, чточто «массовое удаление» (Queryset.delete (), например, действие флажков администратора) не будет вызывать метод delete () отдельных экземпляров, оно перейдет прямо к SQL: https://docs.djangoproject.com/en/dev/topics/db/queries/#deleting-objects