Как сохранить страницу с использованием django -фильтров, когда фильтр не применяется? - PullRequest
0 голосов
/ 01 мая 2020

Я использую django -фильтры для фильтрации категорий и цен. Моя проблема в том, что когда я фильтрую результаты, они разбиваются на страницы, но когда фильтры не применяются, нет нумерации страниц. Как я могу добавить нумерацию страниц, если не применены фильтры? Заранее спасибо!

Мои фильтры.py:

import django_filters
from .models import Item

class ItemFilter(django_filters.FilterSet):

    class Meta:
        model = Item

        fields = {
            'category': ['exact'],
            'price': ['lte']
        }

Мои просмотры.py:

class homeview(ListView):
    model = Item
    template_name = 'products/home.html'
    paginate_by = 8

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['filter'] = ItemFilter(self.request.GET, queryset=self.get_queryset())
        return context

Мой дом. html:

<div class="card">
          <div class="card-body">
            <div class="container">
              <form method="GET">
                {{ filter.form|crispy }}
                <button type="submit" class="btn btn-primary mt-4">Filter</button>
              </form>
            </div>
          </div>
        </div>

        <h1 class="mb-4">List Of Items</h1>
        <div class="row">
          {% for item in filter.qs %}
           ....
          {% endfor %}

1 Ответ

0 голосов
/ 01 мая 2020

class ListModelMixin:
    """
    List a queryset.
    """
    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        return Response(serializer.data)```
...