前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django:convert queryset into list of dicts

django:convert queryset into list of dicts

原创
作者头像
刀枪不入de王二花
发布2022-09-03 10:53:34
1.7K0
发布2022-09-03 10:53:34
举报
文章被收录于专栏:BETTER

要件:

#convert queryset into list of dicts

#【Django】QuerySetを辞書型(dict)のlistに変換する

1,通过模型(Model)类的Manager,获取Queryset

代码语言:javascript
复制
>>> from pur.models import Document
>>> doc = Document.objects.filter(id__gte=100).all() 
>>> doc
<QuerySet [<Document: Document object (100)>, <Document: Document object (101)>]>

2,期待结果:

代码语言:javascript
复制
[{'id': 100, 'name': 'EMS20220707.pdf'}, {'id': 101, 'name': '三菱オンライン入会申込.pdf'}]

对策:

Use the.values()method, 返回结果仍为Queryset,再用list转换一下即可。

代码语言:python
代码运行次数:0
复制
>>> doc = Document.objects.filter(id__gte=100).values('id','name') 
>>> doc
<QuerySet [{'id': 100, 'name': 'EMS20220707.pdf'}, {'id': 101, 'name': '三菱オンライン入会申込.pdf'}]>
>>> type(doc)
<class 'django.db.models.query.QuerySet'>

①全项目取得

代码语言:javascript
复制
>>> doc = Document.objects.filter(id__gte=100).all() 
>>> ld=list(doc.values())
>>> ld
[{'id': 100, 'type': '支払申請', 'no': 0, 'name': 'EMS20220707.pdf', 'folder': ''},
 {'id': 101, 'type': '支払申請', 'no': 0, 'name': '三菱オンライン入会申込.pdf', 'folder': ''}]

②指定項目取得

代码语言:javascript
复制
>>> ld=list(doc.values('id','name'))
>>> ld
[{'id': 100, 'name': 'EMS20220707.pdf'}, {'id': 101, 'name': '三菱オンライン入会申込.pdf'}]

补充:

只取得值,不要key,用values_list() ,括号内可传指定转换项目。同样返回结果为Queryset,需要list转换。

代码语言:javascript
复制
>>> doc.values_list('id','name') 
<QuerySet [(100, 'EMS20220707.pdf'), (101, '三菱オンライン入会申込.pdf')]>
>>> list(doc.values_list('id','name'))
[(100, 'EMS20220707.pdf'), (101, '三菱オンライン入会申込.pdf')]

补充说明参照检索对象

检索对象

要从数据库检索对象,要通过模型类的 Manager 构建一个 QuerySet

一个 QuerySet 代表来自数据库中对象的一个集合。

它可以有 0 个,1 个或者多个 filters. Filters,可以根据给定参数缩小查询结果量。

在 SQL 的层面上, QuerySet 对应 SELECT 语句,而*filters*对应类似 WHERELIMIT 的限制子句。

你能通过模型的 Manager 获取 QuerySet。每个模型至少有一个 Manager,默认名称是 objects。直接通过模型类使用它

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 要件:
  • 对策:
  • 补充:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档