I\'ve managed to disable the \"Delete selected\" action. Easy.
But a user can still click on an item and then there\'s the red Delete link at the bottom.
The solutions here are already nice, but I prefer to have it as a reusable mixin, like this:
class NoDeleteAdminMixin:
def has_delete_permission(self, request, obj=None):
return False
You can use this in all your admins where you want to prevent deletion like this:
class MyAdmin(NoDeleteAdminMixin, ModelAdmin):
...