You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django guardian的get_objects_for_user传权限列表无返回结果排查

问题原因与解决方案

当你给get_objects_for_user传入权限元组/列表时,方法默认使用AND逻辑——只有用户同时拥有所有传入权限的对象才会被返回。从你的测试结果来看,alvin没有任何一个Project同时具备view_project和change_project权限,所以返回了空QuerySet。

要实现“拥有任意一个权限就返回对象”的需求,需要显式指定any_perm=True参数,将权限判断逻辑切换为OR逻辑:

>>> projects = get_objects_for_user(alvin, ('change_project', 'view_project'), klass=Project, any_perm=True)
>>> projects
<QuerySet [<Project: Central whole.>, <Project: Education soldier.>, <Project: Evening cold.>]>

内容的提问来源于stack exchange,提问作者toni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:02:35