2011-06-27 9 views

Respuesta

41

Puede utilizar el filtro de plantilla length:

{{ articles|length }} 

mostrará la longitud de la lista de artículos.

+0

'count' probablemente sea más eficiente ya que no necesita evaluar todo el conjunto de consultas, sino que usará otra solicitud SQL con' count (*) '. –

+3

@Guillaume, en realidad 'length' simplemente llama a' len', y Django es lo suficientemente inteligente como para hacer 'count (*)' si aún no se evaluó el queryset. De hecho, si va a iterar de todos modos más adelante, 'len' puede ser * más * eficiente, ya que le impide hacer dos llamadas a bases de datos. –

+0

Gracias, no tenía idea de que Django era tan inteligente sobre la 'longitud'. Y obviamente tiene razón sobre el hecho de que 'len' * puede * ser más eficiente. –

1

El método count() obtiene la cantidad de elementos recuperados por el queryset al que se llama.

+0

usarlo como que '{{}}' articles.count –

+2

Una cosa a destacar, sin embargo. 'count' ejecutará un CUENTA SQL si el conjunto de consulta aún no ha sido evaluado. Luego, cuando se repita más tarde, se realizará otra consulta DB (SELECT). Eso es dos consultas. Si necesita el recuento antes de realizar un bucle en el conjunto de consulta o similar, '{{articles | length}}' es más eficiente. –

4

La mejor manera de hacer esto creo que es:

{{ articles.count }} 
Cuestiones relacionadas