QuerySet查询的相关API

本文详细介绍了Django框架中QuerySet API的功能与使用方法,包括查询集的基础概念、缓存机制及其提供的多种操作方式,如get、filter、order_by等,并提供了具体的示例说明。

QuerySet表示从数据库中查询到的结果,一般是一个集合。

queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。

得到的QuerySet可以进行迭代和切片操作

QuerySet API 表示访问数据库的相关接口。

查询相关的API

1.get(**kwargs): 返回与所给的筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个,就会抛出 MultipleObjectsReturned 异常, 如果没有找到符合筛选条件的对象,就会抛出 DoesNotExist 异常。

2.all(): 查询所有的结果。

3.filter(**kwargs): 包含了与所给的筛选条件相匹配的对象

>>> 类名.objects.filter(city = '北京') # 查询城市是北京的所有字段

4.exclude(**kwargs): 包含那些与所给筛选条件不匹配的对象

>>> 类名.objects.exclude(city = '北京') # 查询城市不是北京的所有字段,与上一个相反

5.order_by(*fields): 对查询结果排序

>>> 类名.objects.all().order_by('id') # 按照升序排序
>>> 类名.objects.all().order_by('-id') # 按照降序排序

6.reverse(): 对查询结果反向排序

>>> 类名.objectts.all().reverse() # 降序排序

7.distinct(): 从返回结果中剔除重复记录

>>> 类名.objects.all().values('id', 'name').distinct() # 得到字段的id和name信息,且重复字段只显示一次

8.values(*fields): 返回一个ValuesQuerySet(一个特殊的QuerySet), 运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列。

>>> 类名.objects.all().values('id', 'name') # 得到字段的id和name信息

9.values_list(*fields): 与values相似,只不过前者返回的结果是字典序列,而values_list()返回的结果是元组序列。

10.count(): 返回数据库中匹配查询(QuerySet)的对象数量

>>> 类名.objects.filter(sex = 0).count() # 统计性别编号是0的字段的数量

11.first():返回第一条记录,等价于[:1][0]

12.last(): 返回最后一条记录,等价于[::-1][0]

<span style="font-size:18px;">类名.objects.all().first()
类名.objects.all().last()
等价于
类名.objects.all()[1][0]
类名.objects.all()[::-1][0]</span>

13.exists(): 如果QuerySet包含有数据,就返回True,否则返回False



更多精彩内容请查看官方文档,里面有对应的例子:QuerySet API的官方文档


上面提到的带 * 号的参数,如果是一个的话表示的是可变参数,如果是两个的话,表示的是关键词参数,如果没有的话,则为默认参数

注意: 一个 * 号接收的是元组, 两个 * 号接收的是字典

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值