首页 > 解决方案 > 如何将查询集实例转换为字典 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 列。

标签: djangopostgresqldjango-modelsdjango-viewsdjango-queryset

解决方案


尝试这个:

nodes = Node.objects.select_related().all()
nodes_list = [
    {item.id: item} for item in nodes
]

它只会命中一次 DB。


推荐阅读