首页 > 解决方案 > 检查用户是否具有列表权限并将结果转换为字典的有效方法

问题描述

我希望能够做到以下几点:

  1. 传入权限列表,例如:['can_change_xxx' , 'can_add_xxx',...]
  2. 该函数会将其转换为{'can_change_xxx':True,'can_add_xxx':False,...}

尽可能高效。

这样做的原因是创建一个权限字段序列化程序,借此我会将布尔值传递给前端以进行一些条件渲染。

标签: djangodjango-rest-framework

解决方案


您可以像这样使用 dict 理解:

def get_perm_dict(user, perm_list):
  return { p: user.has_perm(p) for p in perm_list}

这是一种生成字典的快速方法,但我不确定 django 是否提供了一种更有效的方法来一次获取所有用户权限,而不是单独检查每个用户权限。


推荐阅读