Jednym ze sposobów ograniczania obiektów jest dodanie ograniczenia do takiej funkcji
def ten_objects():
obj = Model.objects.all()[0:10] # limit to 10
return {'objects': obj}
Jak jednak osiągnąć to w szablonie, a nie w widoku?
Wiem, że możesz filtrować obiekty w szablonie i ograniczać liczbę znaków, ale jak faktycznie ograniczyć liczbę obiektów wyświetlanych w pętli. Za pomocą szablonu. na przykład poniższy kod będzie przechodził przez wszystkie obiekty ....
<ul>
{% for new in news %}
<li>
<p>{{ news.title }}</p>
<p>{{ news.body }}</p>
</li>
{% endfor %}
</ul>
Jak przerwać pętlę, powiedzmy po pierwszych 3 obiektach / przedmiotach. I jak to zrobić w szablonie. Z góry dziękuję.
slice
</a>Odpowiedzi:
Istnieje
slice
filtr, którego możesz używać w szablonach. Działa to dokładnie tak samo, jak wycinanie w widoku.{% for new in news|slice:":10" %}
źródło
{% for object in user.objects.all %}
, możesz użyć{% for object in user.objects.all|slice:":10" %}
Chcesz użyć filtru szablonu wycinka
Oto Twój przykład zmieniony, aby go używać:
<ul> {% for new in news|slice:":3" %} <li> <p>{{ new.title }}</p> <p>{{ new.body }}</p> </li> {% endfor %} </ul>
źródło
{{ new.title}}
i{{ new.body }}