some_queryset.count()
o {{some_queryset.count}}
en su plantilla.
no use len
, es mucho menos eficiente. La base de datos debería estar haciendo ese trabajo. Consulte la documentación sobre count()
.
Sin embargo, teniendo en cuenta los consejos de búfer, si planea iterar sobre los registros, también puede usar len
que implicará resolver el conjunto de consulta y hacer que las filas resultantes residan en la memoria principal. Esto no se desperdiciará porque de todos modos visitarás estas filas. En realidad, podría ser más rápido, dependiendo de la latencia de la conexión db, pero siempre debe medir.
hay un filtro llamado 'length' llamar len() en cualquier cosa. '{{any_iterable | length}}' –
@ Yuji'Tomita'Tomita así que para esto habías usado 'some_queryset.all | length'? ¿Es esto óptimo en términos del SQL generado? El 'some_queryset.count' usa' SELECT COUNT (*) '... en lugar de seleccionar todos los campos del modelo. No sé cuán significativo es esto en términos de rendimiento, supongo que para algo con un gran conjunto de consultas esto podría ser significativo. – AJP
@AJP sí. Si SOLO obtiene el conteo, entonces haga un cierto número de cuentas. Si ya está evaluado de todos modos, | length podría ahorrarle un hit de db. –