Как ограничить список объектов на стороне шаблона, а не на стороне просмотра


83

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

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 объектов / предметов. И как мне это сделать внутри шаблона. Заранее спасибо.


Ответы:


180

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

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

2
Если у вас есть сценарий, который вы используете, {% for object in user.objects.all %} вы можете использовать{% for object in user.objects.all|slice:":10" %}
Самир Тендулкар

пожалуйста, дайте мне ссылку на документацию по django.
шквал

1
Это буквально связано с моим ответом выше.
Дэниел Роузман,

Я получил этот @Daniel. Я ищу срез в репозитории github django, но обнаружил, что slice_filter не срез.
Squal

Работаю на меня.
bhattraideb

12

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

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

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

1
Я знаю, что я немного придираюсь, но так должно быть: {{ new.title}}и {{ new.body }}
Хусам

это более полный пример кода, чем принятый ответ, это более полезный ответ, поэтому я проголосовал за и объясняю, почему
Кейт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.