使用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
相关产品推荐
相关产品推荐

