2010-05-20 26 views
0

在我看來,我回一個博客的所有帖子:如何返回的行數在模板

posts = Post.objects.filter(blog=blog) 

,並把它傳遞給上下文。

但是..如何獲得模板中的帖子數量?

這是我的模板:

<h1>Number of posts: {{ ??? }} </h1> 

{% for post in posts %} 

{{ post.title }} 

{{ post.body }} 

{% endfor %} 

回答

5
<h1>Number of posts: {{ posts.count }} </h1> 

實際上,在這種非常特殊的情況下,使用length模板過濾器 - 這只是調用len() - 會更有效。這是因爲在未評估的查詢集上調用.count()會導致它返回到數據庫以執行SELECT COUNT,而len()強制對查詢集進行評估。

顯然,如果您不打算評估完整的查詢集,那麼前者通常會更高效。但是在這裏,我們將立即遍歷整個查詢集,因此執行count只會引入額外的不必要的數據庫調用。

所以一切的結果是,這是更好地在這裏:

<h1>Number of posts: {{ posts|length }} </h1> 
+0

+1清楚地解釋.count()和長度過濾器之間的區別 – 2010-05-21 18:26:36