【问题标题】:How to keep the page paginated using django-filters when no filter is applied?未应用过滤器时如何使用 django-filters 保持页面分页?
【发布时间】:2020-05-01 19:40:56
【问题描述】:

我正在使用 django-filters 来过滤类别和价格。我的问题是,当我过滤结果时,它是分页的,但是当没有应用过滤器时,就没有分页。没有应用过滤器时如何添加分页?提前致谢!

我的过滤器.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 %}

【问题讨论】:

    标签: python django django-filters


    【解决方案1】:
    
    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)```
    

    【讨论】:

    • 你能告诉我应该如何在我的情况下添加它吗?那会很有帮助
    猜你喜欢
    • 2018-12-25
    • 2018-05-11
    • 2019-02-21
    • 2011-05-24
    • 2018-02-20
    • 2019-08-17
    • 2016-12-09
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多