Django 第十课 5.【聚合函数】

博客介绍了Django中聚合函数的使用,所有聚合函数都在‘django.db.models’下,不能单独执行,需放在如‘aggregate’方法中。执行后可按规则命名结果,‘aggregate’返回字典。还提到‘order_by’可对查询结果排序,多个‘order_by’会改变排序规则,也可在模型‘meta’类中指定默认排序。

1:所有的聚合函数都是放在 ‘django.db.models’ 下面

2:聚合函数不能单独执行,需要放在一些可以执行聚合函数的方法下面中去执行。比如 ‘aggregate’。示例代码如下:

result = Book.objects.aggretate(Avg("price"))

 

3: 聚合函数执行完成后,给这个聚合函数的值去个名字,取名字的规制,默认是 ‘field__【聚合函数名】’ 形成的。比如以上代码形成的名字叫做‘price__avg’ 。如果不想使用默认的名字,那么可以在使用聚合函数的时候传递关键字参数进去,参数的名字就是聚合函数执行完成的名字。示例代码如下:

result = Book.objects.aggretate(avg=Avg("price"))

#以上传递了关键字参数 ‘avg=Avg("price")’ ,那么以后 ‘Avg’聚合函数执行完成的名字就叫做‘avg’

 

4:‘aggretate’:这个方法不会返回一个‘QuerySet’对象,而是返回一个字典,这个字典中的key就是聚合函数的名字。值就是聚合函数执行后的结果

 

5:order_by:指定将查询的结果根据某个字段进行排序。如果要倒叙排序,那么可以在这个字段的前面加一个负号。

articles = Article.objects.order_by("create_time")
articles = Article.objects.order_by("-create_time")

 

一定要注意的一点是,多个order_by,会把前面排序的规制给打乱,而使用后面的排序方式。

articles = Article.objects.order_by("create_time").order_by("auther_name")

 

他会根据作者的名字进行排序,而不是使用文章的创建时间。当然,也可以在模型定义的在 ‘meta’类中定义‘ordering’来指定默认的排序方式。

Class Meta:
  db_table = 'book_order' #数据库表名   ordering = ['create_time', '-price'] #默认数据库排序

 

转载于:https://www.cnblogs.com/nelsen-chen/p/9544154.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值