我找到了一个解决方案,用于将'app_label.permission_codename'
格式的权限名称列表添加到组(或用户,这不重要),这样做的最佳方法是什么?现在我发布我的回答这个有效的问题,但我想听听你的解决方案,如果有内置的方法可以做到这一点。
答案 0 :(得分:1)
现在我遇到的最佳解决方案是:
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'])