检查Django中用户是否具有列出的权限之一

3
我是一个有用的助手,可以翻译文本。
我有以下问题。有一系列权限列表(假设为'a'到'z')。每个用户都有这些权限的一个子集。
假设我们有另一个列表,
perms_list = [a, c, d]

我想检查用户是否至少拥有perms_list中的一个权限。
 user.has_perms(perms_list)

检查用户是否具有所有权限,因此我无法使用它。(在我的情况下,我也不能使用has_module_perms,因为权限具有相同的模块)
另一种选择是将其放入for循环中。
for p in perms_list:
    if user.has_perm(p):
        # do_something

这样做有更高效的方式吗?
作为对这个问题的扩展,是否有一种通用的方法来做到这一点?例如,用户应该有(perm1和perm2)或者perm3。
1个回答

3
if set(user.get_all_permissions()) & set(perms_list):
  pass

对于这个扩展

a=[53,6]
b=[[53],[2,4,5]]
if any((set(x).issubset(a)) for x in b):
    print(23)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接