python - 在 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。
解决方案
我如何通过使用集合来转换上面的代码片段
好吧,从技术上讲,您可以这样做:
users_set = set(int(x) for x in user_list.meta_value.split(","))
但是您的真正问题是设计问题-您不应该在一个字段中存储相关 pk 列表(您不应该存储任何类型的 FWIW 列表)。要么使用现有auth.User
功能,要么使用权限,要么使用自定义用户模型并向其中添加你自己的东西等,但无论如何都要保持你的关系模式正确规范化。我的2美分...
推荐阅读
- python - 有没有办法利用 asyncio 的多个 CPU 内核?
- reactjs - 最近我收到了这个错误,但过去我没有收到
- javascript - 在chart.js中使用带有月份和年份的自定义x轴绘制条形图时出现问题
- symfony - 如何从我的 symfony 4.4 LTS 项目中正确删除 sensiolabs/security-checker
- python - 如何使用熊猫应用功能创建多个列
- php - JSON 在响应上被垃圾稀释
- bash - 通过在同一目录中提取文件 basename 来重命名目录
- vsto - 使用 Outlook VSTO 自定义搜索栏
- rust - Rust 在专用版本中调用函数的默认实现
- javascript - 如何用反应钩子停止负数?