Как отобразить 3 последних элемента в django

Есть ли способ запросить модель django, чтобы отобразить последние 3 элемента в секции моего шаблона и отобразить следующие 3 в следующей части моего шаблона по порядку? например: some_list это ['a', 'b', 'c', 'd', 'e', 'f', 'g'], поэтому [:3] дает вам ['a','b','c'] так как же мне получить следующие 3 от 'd' до 'f' в моем запросе?

Да.

Если вы передаете object_list в контекстных данных, вы можете сделать что-то вроде этого.

{% for o in object_list|slice:":3" %}
    {{ o }}<br>
{% endfor %}

<section>
Miscellaneous HTML Stuff
</section>

{% for o in object_list|slice:"3:6" %}
    {{ o }}<br>
{% endfor %}

Если в вашем контексте нет object_list, то вы можете либо добавить его, либо создать две отдельные контекстные переменные с искомыми данными.

class MyView(ListView):
    model = MyModel

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['list1'] = MyModel.objects.all()[:3]
        context['list2'] = MyModel.objects.all()[3:6]
        return context

И ваш шаблон будет перебирать list1 и list2 вместо object_list.

Вернуться на верх