Django ORM 查询指定列字段值的完整指南

青禾
青禾
发布时间:2026-10-13| 6人浏览过
原创

本文详解在 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 字段值内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。