2011-06-27 7 views

Odpowiedz

41

Można użyć filtru szablonu length:

{{ articles|length }} 

wyświetli długość listy artykułów.

+0

'count' będzie prawdopodobnie bardziej efektywny, ponieważ nie musi oceniać całego zestawu zapytań, ale zamiast tego użyje innego zapytania SQL z' count (*) '. –

+3

@Guillaume, właściwie 'length' po prostu wywołuje' len', a Django jest wystarczająco inteligentny, aby zrobić 'count (*)' jeśli queryset nie jest jeszcze oceniony. W rzeczywistości, jeśli zamierzasz iterować to i tak później, 'len' może być * bardziej * efektywny, ponieważ uniemożliwia wykonywanie dwóch wywołań db. –

+0

Dzięki, nie miałem pojęcia, że ​​Django był tak sprytny w kwestii "długości". I oczywiście masz rację co do tego, że 'len' * może * być bardziej wydajny. –

1

Metoda count() pobiera liczbę przedmiotów pobranych przez zestaw zapytań, do którego jest wywoływana.

+0

Używaj go jak ten '{{}}' articles.count –

+2

Należy zwrócić uwagę, choć. 'count' spowoduje uruchomienie kodu SQL COUNT, jeśli zestaw zapytań nie został jeszcze oceniony. Następnie, po iteracji później, zostanie wykonane kolejne zapytanie DB (SELECT). To są dwa pytania. Jeśli potrzebujesz liczby, zanim faktycznie przełączysz się przez zestaw zapytań lub takich, '{{articles | length}}' jest bardziej wydajne. –

4

Najlepszym sposobem, aby to zrobić, to myślę:

{{ articles.count }} 
Powiązane problemy