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