gpt4 book ai didi

python - 如何获取用户在 django guardian 中具有特定权限的所有对象?

转载 作者:太空宇宙 更新时间:2023-11-03 12:29:28 25 4
gpt4 key购买 nike

我目前正在对所有对象进行非常笨拙的循环,但这会变得很慢:

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)

我想一定有一种方法可以获取该用户有权访问的所有对象。

最佳答案

几天前更新了名为“get_objects_for_user”的新快捷函数。如果您使用旧版本的监护人并且无法更新,您可以简单地从那里复制代码。

from guardian.shortcuts import get_objects_for_user
...
videos = get_objects_for_user(request.user, "view_video", Video.objects.all())

它总是做 3 次查询。如果将“use_groups”参数指定为 False,则会执行 2 个查询,但返回的查询集将不包含用户组对其具有权限的对象。如果需要,您还可以指定代号列表,而不是单一权限。 Read more here .

关于python - 如何获取用户在 django guardian 中具有特定权限的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com