class Book(models.Model):
# fields
class Chapter(models.Model):
book = models.ForeignKey(Book)
class Page(models.Model):
chapter = models.ForeignKey(Chapter)
如果我想知道该特定书籍“A”中的页数,实现这一目标的最佳方法是什么?
当然,我可以循环阅读A书的章节并总结每章的页面,但我认为这不是更聪明的方法。
有没有办法通过ORM / Queryset来做到这一点?某种聚合?
答案 0 :(得分:3)
这样的事情可行:
book_a = Book.objects.get(name='A')
page_count = Page.objects.filter(chapter__book=book_a).count()
这将导致数据库连接,该连接将返回其章节来自A书的页数。
答案 1 :(得分:1)
尝试类似:
from django.db.models import Count
page_count = Book.objects.filter(name='A').annotate(Count(chapter__pages))
结果应该在page_count[0].chapter__pages__count
。有关详细信息,请查看documentation。