1、聚合查询
# 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下 from django.db.models import Avg from django.db.models import Sum from django.db.models import Max from django.db.models import Min obj = models.book.objects.all().aggregate(Avg("Book_price")) print(obj) obj = models.book.objects.all().aggregate(Sum("Book_price")) print(obj) obj = models.book.objects.all().aggregate(Max("Book_price")) print(obj) obj = models.book.objects.all().aggregate(Min("Book_price")) print(obj)
2、分组查询
# 分组查询 # 首先把书籍通过作者进行分组,然后求每个作者的书的价格的平均值 obj = models.book.objects.all().values("Book_Auther").annotate(Avg("Book_price")) print(obj)
3、F查询和Q查询
我们先提出一个问题,就是我们要把书这张表中的所有书的价格都加1000,该如何实现呢?我们可以用下面的方法实现
id_list = models.book.objects.all().values_list("id") # obj = models.book.objects.all() for i in id_list: new_price = models.book.objects.filter(id=i[0])[0].Book_price + 1000 models.book.objects.filter(id=i[0]).update(Book_price=new_price)