从权限名称列表添加权限

2024-04-24 03:02:52 发布

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

我找到了一个解决方案,可以将'app_label.permission_codename'格式的权限名列表添加到组(或用户,这并不重要)中,最好的方法是什么?现在,我发布了我对这个问题的答案,但我想听听你的解决方案,如果有一个内在的方式来做到这一点


Tags: 方法答案用户app权限列表格式方式
1条回答
网友
1楼 · 发布于 2024-04-24 03:02:52

目前,我提出的最佳解决方案是:

from itertools import izip
from django.contrib.auth.models import Permission, Group

def pairwise(iterable):
    "s -> (s0,s1), (s2,s3), (s4, s5), ..."
    a = iter(iterable)
    return izip(a, a)

 def get_permissions(permlist):
        pm = [{'codename':b, 'content_type__app_label': a}  for p in permlist for a, b in pairwise(p.split('.'))]
        return [Permission.objects.get(**p) for p in pm]

group = Group.objects.get(name='groupname')
group.permissions = get_permissions([
    'app1.perm_codename1',
    'app2.perm_codename2',
    'app3.perm_codename3',
    'app4.perm_codename4'])

相关问题 更多 >