Django模型管理器/QuerySet 常见的方法

ops/2025/3/3 4:04:52/

模型管理器/QuerySet 常见的方法

get([**kwargs]) 方法
  • 用途:获取满足条件的唯一对象。
  • 参数:关键字参数,指定查询条件。
  • 返回值:模型对象。
  • 异常:如果找到多个对象或未找到对象,将分别抛出 MultipleObjectsReturnedDoesNotExist 异常。

示例

python">try:student = Student.objects.get(pk=1)
except Student.DoesNotExist:print("No student found with pk=1")
except Student.MultipleObjectsReturned:print("Multiple students found with the same pk")
first() 方法
  • 用途:返回查询集中的第一个对象(如果存在)。
  • 参数:无。
  • 返回值:模型对象或 None(如果查询集为空)。

示例

python">student = Student.objects.filter(age__gt=18).first()
if student:print(student.name)
else:print("No student older than 18 found")
last() 方法
  • 用途:返回查询集中的最后一个对象(如果存在)。
  • 参数:无。
  • 返回值:模型对象或 None(如果查询集为空)。

示例

python">student = Student.objects.filter(graduated=False).last()
if student:print(student.name)
else:print("No current student found")
count() 方法
  • 用途:返回查询集中的对象数量。
  • 参数:无。
  • 返回值:整数。

示例

python">num_students = Student.objects.count()
print(f"Total number of students: {num_students}")
filter(**kwargs) 方法
  • 用途:根据给定的条件筛选对象。
  • 参数:关键字参数,指定查询条件。
  • 返回值QuerySet 对象。

示例(已在问题描述中给出)。

exclude(**kwargs) 方法
  • 用途:排除满足给定条件的对象。
  • 参数:关键字参数,指定排除条件。
  • 返回值QuerySet 对象。

示例(已在问题描述中给出)。

all() 方法
  • 用途:获取查询集中的所有对象。
  • 参数:无。
  • 返回值QuerySet 对象。

示例(已在问题描述中给出)。

values(*fields) 方法
  • 用途:返回包含指定字段值的字典的 QuerySet
  • 参数:字段名称的列表或可变参数。
  • 返回值:包含字典的 QuerySet 对象。

示例(已在问题描述中给出),但注意,values() 返回的 QuerySet 中的每个元素都是字典,而不是模型实例。

order_by(*fields) 方法
  • 用途:对查询结果进行排序。
  • 参数:字段名称的列表或可变参数。字段前加 - 表示降序排序。
  • 返回值:排序后的 QuerySet 对象。

示例(已在问题描述中给出)。

distinct() 方法
  • 用途:对查询结果进行去重。
  • 参数:无。
  • 返回值:去重后的 QuerySet 对象。
  • 注意:通常与 values() 方法一起使用以指定去重的字段。

示例(稍作修改):

python"># 假设有多个学生可能有相同的姓名和性别,但其他字段不同
unique_names_sexes = Student.objects.values("name", "sex").distinct()
for item in unique_names_sexes:print(item)

额外方法

exists() 方法
  • 用途:检查查询集是否包含至少一个对象。
  • 参数:无。
  • 返回值:布尔值。

示例

python">if Student.objects.filter(enrolled=True).exists():print("There are enrolled students")
values_list(*fields, flat=False) 方法
  • 用途:返回包含指定字段值的元组的 QuerySet
  • 参数:字段名称的列表或可变参数;flat=True 时,如果查询集只包含一个字段,则返回该字段值的列表而不是元组的列表。
  • 返回值:包含元组的 QuerySet 对象或字段值的列表(如果 flat=True)。

示例

python"># 获取所有学生的ID和姓名,作为元组列表
students_info = Student.objects.values_list("id", "name")
for student_info in students_info:print(student_info)# 仅获取所有学生的姓名,作为列表
students_names = Student.objects.values_list("name", flat=True)
for name in students_names:print(name)

这些方法提供了强大的查询和数据处理能力,使得Django的ORM成为处理数据库操作的有力工具。


http://www.ppmy.cn/ops/162673.html

相关文章

vue图表插件ECharts使用指南

以下是一份较为全面的 ECharts 使用指南,包含安装、基本使用步骤、常见图表示例以及配置项说明等内容。 1. 安装 ECharts 可以通过 npm 或 yarn 进行安装,在项目根目录下执行以下命令: # 使用 npm 安装 npm install echarts --save# 使用 …

浅显易懂HashMap的数据结构

HashMap 就像一个大仓库,里面有很多小柜子(数组),每个小柜子可以挂一串链条(链表),链条太长的时候会变成更高级的架子(红黑树)。下面用超简单的例子解释: ​壹…

机器翻译与语音识别技术:推动人机交互的新篇章

在数字化时代,语言不仅是人类交流的基本工具,也是连接不同文化和国家的桥梁。随着科技的飞速发展,机器翻译与语音识别技术作为语言处理领域的两大核心技术,正逐步改变着人类与计算机之间的交互方式。本文将深入探讨这两种技术的原…

PXE批量网络装机与Kickstart自动化安装工具

目录 一、系统装机的原理 1.1、系统装机方式 1.2、系统安装过程 二、PXE批量网络装机 2.1、PXE实现原理 2.2、搭建PXE实际案例 2.2.1、安装必要软件 2.2.2、搭建DHCP服务器 2.2.3、搭建TFTP服务器 2.2.4、挂载镜像并拷贝引导文件到tftp服务启动引导文件夹下 2.2.5、编…

【MySQL】InnoDB中的Buffer Pool

目录 1、背景2、Buffer Pool【1】含义【2】组成【3】free链表【4】哈希查找缓存页【5】flush链表【6】LRU链表【7】刷新脏页到磁盘【8】Buffer Pool实例【9】chunk【10】Buffer Pool状态信息 3、总结 1、背景 mysql数据是存储在磁盘上的,但是从磁盘上读取数据的速度…

1分钟用DeepSeek编写一个PDF转Word软件

一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的pdf转word工具有收费的wps,免费的有pdfgear,见下文: PDFgear:一款免费的PDF编辑、格式转化软件-CSDN博客 还有网上在线的免费pdf转word工具smallp…

一文速通 std::initializer_list

目录 用途原理加深理解 {} 和 initializer_list为什么不可以?该怎么做 用途 初始化未显示指定长度的数组,存在语法糖: int arr[] { 1, 2, 3 };C11开始,引入了**“统一初始化”**的概念STL 容器拥有类似的初始化能力,…

C语言入门资料分享源码+PDF速查手册

01 目标:掌握基础语法,能编写简单的程序 源码PDF获取 通过网盘分享的文件:C语言入门到精通.rar 链接: https://pan.baidu.com/s/1lcKj3aywRJUecLmoDeQfFg?pwdxiyx 提取码: xiyx 02 环境搭建 安装编译器(推荐GCC/MinGW/M…