1、aggregate
aggregate 是聚合的意思
# 导入常见的聚合函数 SUM, AVG, COUNT, MAX, MIN
python3.8 manage.py shell
>>> from cost_app.models import MonthCost
>>> from django.db.models import Sum, Avg, Count, Max, Min
>>> amount = MonthCost.objects.filter(account__id=8).aggregate(Sum('PaymentAmount'))
>>> print(amount)
{'PaymentAmount__sum': 42167.479999999996}
# aggregate 返回的是一个字典
2、annotate
annotate 分组之后再进行聚合
>>> from django.db.models import Sum, Avg, Count, Max, Min
>>> from cost_app.models import AllMonthReport
>>> report = AllMonthReport.objects.values('month').annotate(Sum('amount'))
>>> print(report)
<QuerySet [{'month': '2019-11', 'amount__sum': 11114.829999999998}, {'month': '2019-12', 'amount__sum': 19776.56}, {'month': '2020-01', 'amount__sum': 19261.65999999999}, {'month': '2020-02', 'amount__sum': 16727.570000000007}]>
# annotate 返回的是一个新的结果集