首页 > 解决方案 > 在 Django 中使用 set 而不是 list 并使用列表中的每个 id 检查 id

问题描述

def user(request):
  users_list = UserConfig.objects.get(meta_key="ALLOWED_USERS")
  users_list = [int(x) for x in user_list.meta_value.split(",")]
  if request.user.id not in users_list:
   // some logic
  else: 
    // other logic

如何通过使用集合来转换上述代码段,目前我正在使用列表进行检查。因此,如果对象得到更多,那么这将不是一种有效的方式。

使用 Django 1.8。

标签: pythondjango

解决方案


我如何通过使用集合来转换上面的代码片段

好吧,从技术上讲,您可以这样做:

users_set = set(int(x) for x in user_list.meta_value.split(","))

但是您的真正问题是设计问题-您不应该在一个字段中存储相关 pk 列表(您不应该存储任何类型的 FWIW 列表)。要么使用现有auth.User功能,要么使用权限,要么使用自定义用户模型并向其中添加你自己的东西等,但无论如何都要保持你的关系模式正确规范化。我的2美分...


推荐阅读