2010-10-11 14 views
55

Jednym ze sposobów na ograniczenie obiektów jest dodanie ograniczenia do funkcji jak tenJak listy ograniczyć obiektów stronie szablonu, zamiast widoku z boku

def ten_objects(): 
    obj = Model.objects.all()[0:10] # limit to 10 
    return {'objects': obj} 

Jednak jak można to osiągnąć wewnątrz szablonu raczej niż w widoku?

Wiem, że można filtrować obiekty w szablonie i ograniczać znaki, ale w jaki sposób faktycznie ograniczyć liczbę obiektów wyświetlanych w pętli. Za pośrednictwem szablonu. na przykład poniższy kod przetasuje wszystkie obiekty ....

<ul> 
    {% for new in news %} 
     <li> 
     <p>{{ news.title }}</p> 
     <p>{{ news.body }}</p> 
     </li> 
    {% endfor %} 
    </ul> 

Jak mogę przerwać pętlę, powiedz po pierwszych 3 obiektach/przedmiotach. I jak to zrobić w szablonie. Z góry dziękuję.

+1

'slice'

Odpowiedz

127

Istnieje filtr slice, który można wykorzystać w szablonach. Działa to dokładnie tak samo, jak cięcie w widoku.

{% for new in news|slice:":10" %} 
10

chcesz użyć filtru slice szablonu

Tu masz przykład zmienił go używać:

<ul> 
{% for new in news|slice:":3" %} 
<li> 
<p>{{ new.title }}</p> 
<p>{{ new.body }}</p> 
</li> 
{% endfor %} 
</ul> 
+1

Wiem, że jestem trochę dokuczliwy, ale powinno być: '{{new.title}}' i '{{new.body}}' – Hussam

+0

jest to bardziej kompletny przykład kodu niż zaakceptowana odpowiedź, jest to bardziej przydatna odpowiedź, więc przegłosowałem i wyjaśnię, dlaczego – Keith

Powiązane problemy