Django:按用户角色过滤用户

Django: Filter users by user role

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

您将需要为用户模型创建自定义 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)

终于我找到了如何做到这一点,我把代码留在这里以防万一有人遇到和我一样的问题

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)