在我看来,我会返回一个博客的所有帖子:
posts = Post.objects.filter(blog=blog)
并将其传递给上下文。
但是..我怎样才能获得模板中的帖子数量?
这是我的模板:
<h1>Number of posts: {{ ??? }} </h1>
{% for post in posts %}
{{ post.title }}
{{ post.body }}
{% endfor %}
答案 0 :(得分:7)
<h1>Number of posts: {{ posts.count }} </h1>
实际上,在这个非常具体的案例中,使用length
模板过滤器 - 只调用len()
- 会更有效率。这是因为在尚未评估的查询集上调用.count()
会导致它返回数据库以执行SELECT COUNT
,而len()
会强制对查询集进行求值。
显然,如果你不打算在那里评估完整的查询集,那么前者通常会更有效率。但是在这里,我们将立即遍历整个查询集,因此执行count
只会引入额外的不必要的数据库调用。
所有这一切的结果是这在这里更好:
<h1>Number of posts: {{ posts|length }} </h1>
答案 1 :(得分:2)