如何获取用户权限

2024-04-23 07:22:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想以预授权id列表的形式检索用户的所有权限,但是:

user.get_all_permissions()

给我权限名称列表。怎么做?


Tags: 用户名称id权限permissions列表getall
3条回答

关键是获取如下权限对象:

from django.contrib.auth.models import Permission
permissions = Permission.objects.filter(user=user)

在这里,您可以像这样访问id属性:

permissions[0].id

如果需要列表(id, permission_name),请执行以下操作:

perm_tuple = [(x.id, x.name) for x in Permission.objects.filter(user=user)]

希望有帮助!

我们可以从用户对象直接将用户权限获取到这样的列表中

perm_list = user_obj.user_permissions.all().values_list('codename', flat=True)

试试这个。。。。

要获取给定用户的所有权限,以及与此用户所属组关联的权限:

from django.contrib.auth.models import Permission

def get_user_permissions(user):
    if user.is_superuser:
        return Permission.objects.all()
    return user.user_permissions.all() | Permission.objects.filter(group__user=user)

相关问题 更多 >