Как вы ограничиваете список объектов со стороны шаблона, а не со стороны просмотра - PullRequest
74 голосов
/ 11 октября 2010

Один из способов ограничения объектов - добавить ограничение к функции, подобной этой

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

Однако, как вы достигаете этого внутри шаблона, а не внутри представления?

Я знаю, что вы можете фильтровать объекты внутри шаблона и ограничивать количество символов, но как вы на самом деле ограничиваете количество объектов, отображаемых в цикле. Через шаблон. например, следующий код будет перебирать все объекты ....

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

Как мне разорвать петлю, скажем, после первых 3 объектов / предметов. И как мне это сделать внутри шаблона. Заранее спасибо.

Ответы [ 2 ]

163 голосов
/ 11 октября 2010

Существует фильтр slice, который можно использовать в шаблонах.Это работает точно так же, как нарезка в представлении.

{% for new in news|slice:":10" %}
12 голосов
/ 11 октября 2010

Вы хотите использовать шаблонный шаблон slice

Вот ваш пример, измененный для его использования:

<ul>
{% for new in news|slice:":3" %}
<li>
<p>{{ new.title }}</p>
<p>{{ new.body }}</p>
</li>
{% endfor %}
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...