Как вернуть количество строк в шаблоне - PullRequest
1 голос
/ 20 мая 2010

На мой взгляд я возвращаю все посты одного блога:

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

и передать его в контекст.

Но .. Как узнать количество постов в шаблоне?

Это мой шаблон:

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

 {% for post in posts %}

 {{ post.title }}

 {{ post.body }}

 {% endfor %}

Ответы [ 2 ]

7 голосов
/ 20 мая 2010
 <h1>Number of posts: {{ posts.count }}  </h1>

На самом деле, в этом очень специфическом случае использование фильтра шаблона length - который просто вызывает len() - было бы более эффективным. Это вызвано тем, что вызов .count() для набора запросов, который не был оценен, заставляет его вернуться в базу данных для выполнения SELECT COUNT, тогда как len() заставляет набор запросов оцениваться.

Очевидно, что первый обычно более эффективен, если вы не собираетесь оценивать полный набор запросов тут же. Но здесь мы немедленно собираемся выполнить итерацию по всему набору запросов, поэтому выполнение count просто вводит дополнительный ненужный вызов базы данных.

Итак, все, что здесь лучше, это:

 <h1>Number of posts: {{ posts|length }}  </h1>
2 голосов
/ 20 мая 2010

Проверьте фильтр length .

...