Django admin - 禁用用户删除

aru*_*lmr 8 django django-admin

我有一个django应用程序,我想在管理员中禁用用户删除.我试图禁用操作并将删除权限设置为false.但它们都没有奏效.

from django.contrib.auth.models import User

class UserProfileAdmin(UserAdmin):
    actions = None
Run Code Online (Sandbox Code Playgroud)

要么

    def has_delete_permission(self, request):
        return False
Run Code Online (Sandbox Code Playgroud)

要么

    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)
Run Code Online (Sandbox Code Playgroud)

但是当我使用UserAdmin为用户信息添加内联时,它工作正常.所以请建议我在django admin中禁用用户删除的方法.提前致谢.

okm*_*okm 16

覆盖ModelAdmin.has_delete_permission应该做的伎俩,你的调用签名是不正确的,它缺少一个obj参数

class UserProfileAdmin(UserAdmin):
    def has_delete_permission(self, request, obj=None): # note the obj=None
        return False
Run Code Online (Sandbox Code Playgroud)

此外,简单地return False阻止所有员工包括删除在Django管理项目管理员,您可能希望只调整User/Group权限,以防止你不希望他们删除这些工作人员User(),通过删除delete_userprofiledelete_user权限.