django - Django admin-禁用用户删除

标签 django django-admin

我有一个django应用,我要在其中禁用用户删除功能。我试图禁用操作并将删除权限设置为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中禁用用户删除的方法。提前致谢。

最佳答案

覆盖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()的员工来防止他们删除delete_userprofile。 cc>和delete_user权限。

关于django - Django admin-禁用用户删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475847/

相关文章:

Django - 覆盖 get_form 以根据请求自定义管理表单

django - 防止 django 管理员在列表表单上运行 SELECT COUNT(*)

python - @login_required 之后的 Django 重定向到下一个

python - Django - 模型字段定义 unicode

python - Okta 身份验证 Django

django - 删除在特定字段中具有重复值的 Django QuerySet 对象

mysql - Django django_admin_log' 不存在

python - Django:login_redirect_url 不起作用

python - Django从字典值动态添加字段

python - 编辑 Django 管理表单,以便只有员工用户才能更改用户密码