Menu
CoddyTech

统计行数

本课属于 Coddy Django 学习旅程的“模型和管理后台”单元。第 10 课,共 23 课。

要知道你有多少本科幻小说,可以把它们全部加载到 Python 中再计数。数据库计数更快。下面每种写法都会执行一个小查询,并返回一个答案:

Book.objects.filter(is_read=True).count()    # 1
Book.objects.filter(price__gt=20).exists()   # False
len(Book.objects.all())                      # 9,加载全部 9 行后

count() 会返回匹配的行数。只要至少有一行匹配,exists() 就会返回 True;如果一行都不匹配,则返回 False。这两个方法都放在 QuerySet 的末尾,也就是 filter() 或 exclude() 之后。len() 返回的数字和 count() 相同,但要等所有行都加载到 Python 中后才能得到结果,因此在大表上速度很慢。

challenge icon

挑战

简单

重写 explore.py,打印两行:

  1. Science fiction: 以及科幻书籍的数量。
  2. Any Tolkien: 以及书架上是否有 J.R.R. Tolkien 的书。

按下“运行”:控制台显示 Science fiction: 3 和 Any Tolkien: True。

亲手试试

from books.models import Book

# 1. 科幻小说:书架上有多少本科幻小说

# 2. 托尔金的书:书架上是否有 J.R.R. Tolkien 写的书
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

模型和管理后台中的所有课

自己练习: Django 在线编辑器