Добрый день.
Есть такая задача. В базе данных есть модель Article. Мне надо в базовом шаблоне вывести первые 6 статей из этой модели, причем со специфической версткой не привязанной к содержимому самой модели. Со специальными картинками и текстами, уникальными для каждой статьи, но не содержащимися в самой модели Article.
Есть вариант, конечно, каждую из этих статей выбрать из базы данных и связать с конкретной контекстной переменной в контекстном процессоре. Но это как-то кривовато, на мой взгляд.
Есть вариант выбрать все 6 сразу одним запросом, потом пройтись по этой выборке в шаблоне циклом и для каждой итерации цикла написать свой вывод в шаблон. Что-то типа:
{% for a in aricles %}
{% if forloop.counter == 1 %}
какая-то верстка, специфичная для первой статьи
{% elif forloop.counter == 2 %}
какая-то верстка специфичная для второй статьи
...
{% endif %}
{% endfor %}
Но это тоже как-то не красиво. Да и лишняя нагрузка будет, потому как каждый раз парсер будет пробегать по всем условиям пока не дойдет до нужного.
Есть еще вариант воспользоваться тегом with и фильтром slice и написать что-то типа:
{% with a=articles|slice: "1" %}
какая-то верстка специфичная для первой статьи
{% endwith %}
...
Но, с одной стороны, не уверен что это сработает, еще не проверял, с другой, не уверен что это лучший вариант.
А, вообще, не раз сталкивался с задачей когда в шаблон надо отдать queryset а в каком-то месте шаблона надо брать информацию только из одного конкретного элемента выборки.
Кто что посоветует?