接着前面的例子,舉例聚集查詢和分組查詢例子如下:
1.查詢人民郵電出版社出了多少本書
>>> Book.objects.filter(publisher__name='人民郵電出版社').count()
>>> from django.db.models import * >>> Book.objects.filter(publisher__name='人民郵電出版社').aggregate(Count('title'))
2.查詢陳吉出的書總價是多少
>>> Book.objects.filter(authors__name='陳吉').aggregate(Sum('price'))
3.查詢各個作者出的書的總價格是多少
>>> Book.objects.values('authors__name').annotate(Sum('price'))
4.查詢各個出版社最便宜的書價是多少
>>> Book.objects.values('publisher__name').annotate(Min('price'))
1.annotate(*args,**kwargs):可以為QuerySet中的每個對象添加注解。可以通過計算查詢結果中的每個對象所關聯的對象集合,從而得出總計值(也可以是平均值或總和,等等)。
用於分組查詢。
2.aggregate(*args,**kwargs):通過對QuerySet進行計算,返回一個聚合值的字典,aggregate()中每個參數都可以指定一個包含在字典中的返回值。
用於聚合查詢
所在位置:django.db.models
1.Avg:返回所給字段的平均值
2.Count:根據所給關聯字段返回被關聯model的數量。
3.Max:返回所給字段的最大值
4.Min:返回所給字段的最小值
5.Sum:計算所給字段值的總和
 
         