聚合函数

  • 使用aggregate()过滤器调用聚合函数,返回单个对象
  • 聚合函数包括:AvgMaxMinSumCount
    • 使用Count时,一般不需要 aggregate()过滤器,直接调用即可
  • 被定义在django.db.models

统计总的阅读量

from django.db.models import Sum

def bookList(request):
    # 查询编号不等于3的书籍
    bookInfos = BookInfo.books.filter(~Q(id=3))
    # 统计总的阅读量
    readcount = BookInfo.books.aggregate(Sum('readcount'))

    # 构造上下文
    context = {'booklist':bookInfos,'readcount':readcount}
    return render(request, 'Book/booklist.html', context)
  • 注意上下文字典取总阅读量时的key的书写规则
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>书籍列表信息</title>
</head>
<body>

<h1>总阅读量:{{ readcount.readcount__sum }}</h1>

<ul>
    {% for book in booklist %}
        <li>{{ book.name }}</li>
    {% endfor %}
</ul>

</body>
</html>