#convert queryset into list of dicts
#【Django】QuerySetを辞書型(dict)のlistに変換する
1,通过模型(Model)类的Manager,获取Queryset
>>> from pur.models import Document
>>> doc = Document.objects.filter(id__gte=100).all()
>>> doc
<QuerySet [<Document: Document object (100)>, <Document: Document object (101)>]>
2,期待结果:
[{'id': 100, 'name': 'EMS20220707.pdf'}, {'id': 101, 'name': '三菱オンライン入会申込.pdf'}]
Use the.values()
method, 返回结果仍为Queryset,再用list
转换一下即可。
>>> 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'>
①全项目取得
>>> 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': ''}]
②指定項目取得
>>> ld=list(doc.values('id','name'))
>>> ld
[{'id': 100, 'name': 'EMS20220707.pdf'}, {'id': 101, 'name': '三菱オンライン入会申込.pdf'}]
只取得值,不要key,用values_list() ,
括号内可传指定转换项目。同样返回结果为Queryset,需要list转换。
>>> 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*对应类似 WHERE
或 LIMIT
的限制子句。
你能通过模型的 Manager
获取 QuerySet
。每个模型至少有一个 Manager
,默认名称是 objects
。直接通过模型类使用它
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。