在我的应用程序中,每个用户都可以访问四个组中的一个(我创建了四个组)。我必须检查用户是否具有访问表单的ceritan权限。我正在从获取用户 self.request.user 并获取相应用户模型的查询集。
self.request.user
group = self.request.user.groups.all()
但如果我试着去做
self.request.user.groups.all().values('permissions')
它以这样一种方式打印权限:每个权限都有一个与其关联的数字。我想检查是否有任何方法可以根据我得到的查询集检查用户是否可以访问ceritan模型。我的意思是有类似的方法吗 has_perm('') 执行上述任务。我在谷歌和StackOverflow上搜索过。但没有找到令人满意的结果。那么,有没有办法执行上述操作呢??
has_perm('')
如果你使用 .values(..) 您可以获得 初级的 钥匙,而且 .值(..) 通常只用于某些特定情况。
.values(..)
.值(..)
您可以通过以下方式查询权限:
Permission.objects.filter(group__user=request.user).distinct()
这会给你 Permission 分配给组的对象,其中 request.user 是成员。
Permission
request.user
我们需要使用 .distinct() 这里,因为如果将权限添加到 倍数 用户所属的组,将返回该权限 倍数 时代。
.distinct()