我有一个django应用,我想在admin中禁用用户删除。我试图禁用操作并将删除权限设置为false。但他们都没有工作。
from django.contrib.auth.models import User
class UserProfileAdmin(UserAdmin):
actions = None
或
def has_delete_permission(self, request):
return False
或
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)
但是当我使用UserAdmin为用户信息添加内联时,它工作正常。所以请建议我在django admin中禁用用户删除的方法。提前谢谢。
答案 0 :(得分:16)
覆盖ModelAdmin.has_delete_permission
应该诀窍,你的调用签名不正确,它缺少obj
参数
class UserProfileAdmin(UserAdmin):
def has_delete_permission(self, request, obj=None): # note the obj=None
return False
此外,只需return False
阻止包括管理员在内的所有员工删除Django Admin中的项目,您可能只想调整User/Group
权限,以防止那些您不希望他们删除User()
的人员{1}},删除了他们的delete_userprofile
和delete_user
权限。
答案 1 :(得分:-2)
如果您的目标是永久删除所有管理员更改表单底部的“删除”按钮,则可以通过修改文件.../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,
并且没有管理员更改表单应显示左下角的“删除”按钮。