打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Django objects 管理器2
userphoto

2024.06.11 河南

关注

Django 的 QuerySet 是 Django ORM 用来表示数据库查询结果集合的一个类。当你调用模型的  objects  管理器(例如  MyModel.objects.all() )时,你会得到一个 QuerySet 对象。以下是一些常见的 QuerySet 方法和属性:

属性

count() - 返回 QuerySet 中对象的数量。

exists() - 如果 QuerySet 中至少有一个对象,返回 True,否则返回 False。

*values(fields) - 返回一个只包含指定字段的字典的 QuerySet。

*values_list(fields, flat=False) - 返回一个包含字段值元组的 QuerySet。如果  flat=True ,则每个元组只包含一个值。

**dates/datetimes(*fields, options) - 用于日期和时间字段,返回一个按日期分组的 QuerySet。

方法

all() - 返回 QuerySet 中的所有对象。

**filter(*kwargs) - 根据给定的关键字参数过滤 QuerySet。

**exclude(kwargs) - 排除给定的关键字参数所指定的对象。

**get(kwargs) - 根据给定的关键字参数返回 QuerySet 中的单个对象。如果没有找到对象或找到多于一个对象,会抛出异常。

*order_by(args) - 根据一个或多个字段对 QuerySet 进行排序。

reverse() - 反转 QuerySet 的顺序。

distinct() - 移除 QuerySet 中的重复对象。

**aggregate(kwargs) - 进行聚合计算,如求和、平均值等。

**annotate(kwargs) - 添加聚合计算到 QuerySet 的每个对象。

select_related() - 进行 SQL 的 JOIN 操作,以减少数据库查询次数。

prefetch_related() - 用于优化数据库查询,进行相关对象的预取。

*only(fields) - 指定只加载某些字段。

*defer(fields) - 指定延迟加载某些字段。

using(alias) - 指定数据库别名来执行查询。

iterator() - 返回 QuerySet 中的对象迭代器。

**update(kwargs) - 更新 QuerySet 中所有对象的字段。

delete() - 删除 QuerySet 中的所有对象。

first() - 返回 QuerySet 中的第一个对象。

last() - 返回 QuerySet 中的最后一个对象。

slice(start, end) - 返回 QuerySet 中指定范围的对象。

这些方法和属性可以链式调用,以构建复杂的查询。例如:

python

复制

authors = Author.objects.filter(last_name='Smith').order_by('first_name').values_list('name', flat=True)

这行代码将获取所有姓为 "Smith" 的作者,按名字排序,并返回一个包含这些作者名字的元组列表。

QuerySet 的强大之处在于它的惰性加载特性,即它不会立即执行数据库查询,直到你真正需要数据时(例如迭代 QuerySet 或调用  count()  等方法)。这使得你可以构建复杂的查询而不必担心性能问题

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Django的ORM操作
Django中不返回QuerySets的API
django QuerySet里那些常用又不常见的技巧
python models操作
django使用F方法更新一个对象多个对象字段
restframework详细
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服