Индексирование объекта ListView - PullRequest
0 голосов
/ 14 мая 2019

У меня есть запрос ListView с псевдонимами людей, называемых персонами. Я хочу отобразить первые псевдонимы, а затем перебрать остальные. Я не могу найти способ индексировать набор запросов, есть ли другой способ?

<h1>{{ persons.1.nickname }}</h1>
<h1>{{ persons.2.nickname }}</h1>
<h1>{{ persons.3.nickname }}</h1>

{{% for person in persons[3:] %}}
 <h5>{{ person.nickname }}</h5>
{{% endfor %}}

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Вы можете сделать это следующим образом (используя forloop.counter ):

{% for person in persons %}
   {% if forloop.counter < 4 %}
   <h1>{{ person.nickname }}</h1>
   {% else %}
   <h5>{{ person.nickname }}</h5>
   {% endif %}
{% endfor %}
0 голосов
/ 14 мая 2019

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

{% for person in persons|slice:":3" %}
    <h5>{{ person.nickname }}</h5>
{% endfor %}

Этот подход с использованием слайса может вызвать больше запросов, чем в ответе Руддры - вы можете проверить с помощью django-debug-панель инструментов.На практике дополнительные запросы могут не сильно влиять на производительность, и вы должны выбрать подход, который вы считаете более удобным для сопровождения.Если дополнительные запросы являются проблемой, вы можете попытаться вернуть список из метода get_queryset представления списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...