Django admin - disable user deletion

I have a django application in which I want to disable user deletion in admin. I tried to disable actions and set the delete permission to false. But none of them worked.

from django.contrib.auth.models import User

class UserProfileAdmin(UserAdmin):
    actions = None

OR

    def has_delete_permission(self, request):
        return False

OR

    def get_actions(self, request):
        actions = super(UserProfileAdmin, self).get_actions(request)
        if 'delete_selected' in actions:
            del actions['delete_selected']
        return actions

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

But when I use UserAdmin to add inline user information, it works fine. So please suggest me to disable user deletion in django admin. Thanks in advance.

+5
source share
2 answers

Overriding ModelAdmin.has_delete_permissionshould do the trick, your calling signature is incorrect, missing parameterobj

class UserProfileAdmin(UserAdmin):
    def has_delete_permission(self, request, obj=None): # note the obj=None
        return False

, return False , , Django Admin, User/Group, , , User(), delete_userprofile delete_user.

+16

- "" , , .../django/contrib/admin/templatetags/admin_modify.py.

, :

    'show_delete_link': (not is_popup and context['has_delete_permission']
                          and (change or context['show_delete'])),

:

    'show_delete_link': False,

Delete .

-2

All Articles