wil*_*low 3 python django permissions
我目前正在对所有对象进行一个非常笨拙的循环,但这会变慢:
videos = Video.objects.all()
video_list = []
for video in videos:
checker = ObjectPermissionChecker(request.user)
if checker.has_perm('view_video', video):
video_list.append(video)
Run Code Online (Sandbox Code Playgroud)
我认为必须有一种方法来获取该用户拥有权限的所有对象.
luk*_*szb 10
几天前,有一个名为"get_objects_for_user"的新快捷方式更新了.如果您使用较旧版本的监护人且无法更新,则只需从中复制代码即可.
from guardian.shortcuts import get_objects_for_user
...
videos = get_objects_for_user(request.user, "view_video", Video.objects.all())
Run Code Online (Sandbox Code Playgroud)
它总是做3个查询.如果将"use_groups"参数指定为False,则会执行2个查询,但返回的查询集将不包含用户组具有权限的对象.您还可以指定代码列表,而不是单个权限(如果需要).在这里阅读更多.
| 归档时间: |
|
| 查看次数: |
3590 次 |
| 最近记录: |