Django ORM 查询指定列字段值的完整指南
本文详解在 Django ORM 中如何高效查询数据表的指定列字段值。通过对比 values() 返回字典列表与 values_list() 返回元组列表两种方式的差异,并结合实际代码示例,展示如何从 QuerySet 中提取纯净的字段值列表,解决开发中常见的数据提取痛点。
ORM 基本概念
1. 什么是 ORM
- ORM 的全称是 Object-Relation Mapping。
- 其中文含义为对象-关系映射。
- 在 MVC 或 MVT 设计模式中,Model 模块通常都集成了 ORM 功能。
ORM 的优势与劣势
2. ORM 的优势
(1)开发者只需专注于面向对象编程,无需直接编写面向数据库的代码。
- 所有对数据库的操作均转化为对类属性和方法的操作。
- 无需手动编写各种数据库特定的 SQL 语句。
(2)实现了数据模型与数据库底层操作的解耦,屏蔽了不同数据库之间的操作差异。
- 开发者不再需要关注底层使用的是 MySQL、Oracle 还是其他数据库。
- 通过简单的配置即可轻松更换数据库,且无需修改业务代码。
3. ORM 的劣势
与直接使用 SQL 语句操作数据库相比,ORM 存在一定的性能损耗。这是因为 ORM 需要将对象操作转换为 SQL 语句,并将查询结果映射回对象,这一映射过程会消耗额外性能。
Django ORM 查询指定列字段值
接下来介绍 Django ORM 查询表中某列字段值的具体方法,详情如下:
场景描述:
假设有一个数据表,你需要获取其中某一列的所有值,该如何操作?
解决方案:
假设存在一个名为 Event 的 Model。
方式一:
获取内容:
Event.objects.values('title')
输出内容:
<QuerySet [{'title': '测试feed'}, {'title': '今天'}, {'title': '第三个日程测试'}, {'title': '第四个日程测试'}, {'title': '第五个测试日程'}]>
方式一获取到的是一个 QuerySet,其内容是由键值对构成的字典列表,其中键为表的列名,值为对应的每一行数据。
方式二:
获取内容:
Event.objects.values_list('title')
输出内容:
<QuerySet [('测试feed',), ('今天',), ('第三个日程测试',), ('第四个日程测试',), ('第五个测试日程',)]>
方式二获取到的也是一个 QuerySet,但其内容是元组形式的查询列值。
然而,我们通常希望直接获取这一列的值列表,而不是一个包含列名信息的 QuerySet,或者被包裹在元组中的结果。
查看高阶用法,可以获取一个纯净的值列表,例如:
['测试feed', '今天', '第三个日程测试', '第四个日程测试', '第五个测试日程']
到此这篇关于 Django ORM 查询表中某列字段值的文章就介绍到这了,更多相关 Django ORM 字段值内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













