【问题标题】:Django: Filter users by user roleDjango:按用户角色过滤用户
【发布时间】:2015-08-15 00:35:33
【问题描述】:

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

【问题讨论】:

  • 我建议在用户注册时最好在 db 中有角色或特权选项,并且对于所有管理员注册特权将是管理员和默认用户为普通用户。这将帮助您尽可能多地扩展字母

标签: django django-admin django-users


【解决方案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)

【讨论】:

    【解决方案2】:

    您需要为 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)
    

    【讨论】:

      猜你喜欢
      • 2013-01-27
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2021-11-26
      • 2014-01-31
      • 1970-01-01
      相关资源
      最近更新 更多