Django:按用户角色过滤用户

时间:2015-06-01 13:53:21

标签: django django-admin django-users

我使用django管理站点作为我的网络应用程序,但我遇到了问题。我需要员工用户可以更改,创建和删除其他员工用户,但我不希望他们更改超级用户的信息。我想知道是否可以按角色过滤用户列表(员工用户看不到列表中的超级用户)。

2 个答案:

答案 0 :(得分:1)

最后我发现了如何做到这一点,我将代码放在这里以防万一有人遇到我遇到的同样的问题

def get_queryset(self, request):
    queryset = super(UserAdmin, self).get_queryset(request)
    if request.user.is_superuser:
        return queryset
    return queryset.filter(is_superuser=False)

答案 1 :(得分:0)

您需要为User模型创建自定义ModelAdmin。我建议您继承原始版本,然后可以覆盖get_queryset方法。

你应该结束:

from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

class MyUserAdmin(UserAdmin):

    def get_queryset(self, request):
        qs = super(MyUserAdmin, self).get_queryset(request)
        if request.user.is_superuser:
             return qs
        else:
             return qs.filter(is_superuser=False)

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