当前位置:  开发笔记 > 编程语言 > 正文

如何在Django中获取具有特定权限组的所有用户的列表

如何解决《如何在Django中获取具有特定权限组的所有用户的列表》经验,为你挑选了4个好方法。

我想获得具有特定权限组的所有Django auth用户的列表,如下所示:

user_dict = {
    'queryset': User.objects.filter(permisson='blogger')
}

我无法找到如何做到这一点.如何在用户模型中保存权限组?



1> 小智..:

如果要按权限获取用户列表,请查看以下变体:

from django.contrib.auth.models import User, Permission
from django.db.models import Q

perm = Permission.objects.get(codename='blogger')  
users = User.objects.filter(Q(groups__permissions=perm) | Q(user_permissions=perm)).distinct()



2> Daniel Naab..:

这将是最简单的

from django.contrib.auth import models

group = models.Group.objects.get(name='blogger')
users = group.user_set.all()



3> cms..:

我认为对于组权限,权限是针对组存储的,然后用户具有链接到它们的组.所以你可以解决用户 - 组关系.

例如

518$ python manage.py shell

(InteractiveConsole)
>>> from django.contrib.auth.models import User, Group
>>> User.objects.filter(groups__name='monkeys')
[, ]



4> augustomen..:

基于@Glader的回答,这个函数将它包装在一个查询中,并且已被修改为algo获取超级用户(根据定义,它们具有所有权限):

from django.contrib.auth.models import User
from django.db.models import Q

def users_with_perm(perm_name):
    return User.objects.filter(
        Q(is_superuser=True) |
        Q(user_permissions__codename=perm_name) |
        Q(groups__permissions__codename=perm_name)).distinct()

# Example:
queryset = users_with_perm('blogger')

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有