Джанго заказ с нумерацией страниц

django python-3.x pagination django-views

176 просмотра

1 ответ

Я реализовал порядок и нумерацию страниц в общем ListView:

class CarList(LoginRequiredMixin, ListView):
    model = Car
    paginate_by = 30

    ordering = 'car_id_internal'

    def get_ordering(self):
        return self.request.GET.get('ordering', 'car_id_internal')

И в моем шаблоне:

<thead>
        <tr>
            <th><a href="{% url 'car_list' %}?ordering=car_id_internal">Internal car ID</a></th>
            <th><a href="{% url 'car_list' %}?ordering=type">Type</a></th>
            <th><a href="{% url 'car_list' %}?ordering=brand">Brand</a></th>
        </tr>
    </thead>

и нумерация страниц в шаблоне:

{# .... **Now the pagination section** .... #}
{% if is_paginated %}
    <div class="pagination" style="width:100%">
        <span class="page-links">
            <div class="col-sm-2">
            {% if page_obj.has_previous %}
                <a href="/feriehus?page={{ page_obj.previous_page_number }}">Forrige side</a>
            {% endif %}
            </div>
            <div class="col-sm-2">
            <span class="page-current">
                Side {{ page_obj.number|unlocalize }} af {{ page_obj.paginator.num_pages|unlocalize }}
            </span>
            </div>
            <div class="col-sm-2">
            {% if page_obj.has_next %}
                <a href="/feriehus?page={{ page_obj.next_page_number }}">Næste side</a>
            </div>
            {% endif %}
        </span>
    </div>
{% endif %}

Это работает нормально, однако, когда я нажимаю на следующую страницу, она переходит к упорядочению по car_id_internal. Я бы хотел, чтобы порядок сортировки был выбран на первой странице, например, тип при переходе на следующую страницу. Это возможно с Джанго? Я использую Django 1.9.

Я надеюсь, что кто-то может помочь.

Автор: Wessi Источник Размещён: 08.11.2019 11:03

Ответы (1)


2 плюса

Решение

Вам необходимо передать текущее значение заказа в шаблон и использовать его в ссылках на следующую / предыдущую страницу:

class CarList(LoginRequiredMixin, ListView):
    def get_context_data(self, *args, **kwargs):
        context = super(CarList, self).get_context_data(*args, **kwargs)
        context['current_order'] = self.get_ordering()
        return context

...

<a href="/feriehus?ordering={{ current_order }}&page={{ page_obj.previous_page_number }}">

и так далее.

Автор: Daniel Roseman Размещён: 20.08.2016 08:17
Вопросы из категории :
32x32