Добавление Django_filter и нумерации страниц в класс FilterView в Django - PullRequest
0 голосов
/ 29 декабря 2018

Я использую библиотеку django_filters для фильтрации представлений списка, вот форма фильтра:

class WorkerFilter(django_filters.FilterSet):
    class Meta:
        model = Worker
        fields = ['id', 'branch']

вот как выглядит представление :

class WorkerListView(FilterView):
    model = Worker
    paginate_by = 1
    filter_class = WorkerFilter
    template_name = 'erp_system/worker_list.html'
    filterset_fields = ['id', 'branch']

    def get_queryset(self):
        new_context = Worker.objects.filter(
            active=True,
        )
        return new_context

И я использую форму внутри HTML-шаблона следующим образом:

   <form action="" method="get">
    {{ filter.form.as_p}}
        <button class="btn btn-warning" type="submit"><span class="fa fa-search"></span> بحث </button>
</form>

И в конце этой HTML-страницы у меня есть список и нумератор страниц следующим образом:

        {% for item in filter.qs %}
{{item}}<br>
{% endfor %}
        {% if is_paginated %}
        <div class="pagination">
            <span class="page-links">
                {% if page_obj.has_previous %}
                    <a href="?page={{ page_obj.previous_page_number }}"><button class="btn-success">الصفحة السابقة</button> </a>
                {% endif %}
                <span class="page-current">
                     صفحة رقم  {{ page_obj.number }} من {{ page_obj.paginator.num_pages }}.
                </span>
                {% if page_obj.has_next %}
                    <a href="?page={{ page_obj.next_page_number }}"><button class="btn-success">الصفحة التالية</button> </a>
                {% endif %}
            </span>
        </div>
    {% endif %}

Часть paginator не отображается, даже когда я использовал paginate_by = 1, чтобы отладить ее и убедиться, что {% if is_paginated %} работает

...