django - 如何将查询集实例转换为字典 Django
问题描述
为了优化我的功能,我想将查询集转换为字典并将其存储在缓存中。这是我的实例和输出:
nodes = Node.objects.select_related().all()
<QuerySet [<Node: Node : No name of ( Network IDF )>, <Node: Node : No name of ( Network IDF
)>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>,
<Node: Node : No name of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node:
Node : No name of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node :
No name of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No
name of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No name
of ( Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No name of (
Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No name of (
Network IDF )>, <Node: Node : No name of ( Network IDF )>, <Node: Node : No name of (
Network IDF )>, <Node: Node : No name of ( Network IDF )>, '...(remaining elements
truncated)...']>
例如 :
nodes.get(node_id=7223004840) is <Node: Node : No name of ( Network IDF )>
我希望我的字典包含我的每个 node_id 以及关联的实例。例如:
{7223004840 : <Node: Node : No name of ( Network IDF ), etc}
我不想使用 get :
{7223004840 : nodes.get(node_id=7223004840), etc}
因为它会多次访问数据库。有关信息,我有超过 77 000 行和 20 列。
解决方案
尝试这个:
nodes = Node.objects.select_related().all()
nodes_list = [
{item.id: item} for item in nodes
]
它只会命中一次 DB。
推荐阅读
- php - Wordpress - 在 $_REQUEST 中保存帖子挂钩中的帖子元归档(粘贴复选框和摘录)
- typescript - 通常调用 () => void 类型的函数是什么?
- excel - IF + AND + 日期范围公式
- apache-kafka - 使用基于 kafka 的排序的 Hyperledger Fabric 1.4 设置 Hyperledger Caliper
- javascript - 通过 IPC 发送时“对象已被破坏”
- css - 具有后代选择器特异性的通用选择器
- php - Sethandler fcgi 代理在 Ubuntu 14.04/Apache 2.4.7 php7.2-fpm 上不起作用
- java - 使用 Java Streaming API 从 list.forEach 返回一个列表
- c# - 兑换
在 web api 中建模类类型 - mysql - 将7天添加到时间戳日期mysql