DjangoFilterBackend与Pagination重写get_paginated_response不能共存问题

来源:5-11 drf的过滤

qq_khrystal_0

2020-03-27

StandardResultSetPagination中重写了get_paginated_response修改返回字段

class StandardResultSetPagination(PageNumberPagination):
    page_size = 10  
    page_size_query_param = 'page_size'  
    page_query_param = 'nextId'  
    max_page_size = 100  

    def get_paginated_response(self, data):
        # 修改返回字段
        return Response(OrderedDict([
            ('count', self.page.paginator.count),
            ('isLastPage', self.page.has_next()),
            ('nextId', None if not self.page.has_next() else self.page.next_page_number()),
            ('data', data)
        ]))

View中配置DjangoFilterBackend会失效

class GoodsListViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
    queryset = Goods.objects.all().order_by('id')  
    serializer_class = GoodsModelSerializer
    pagination_class = StandardResultSetPagination  
    filter_backends = (DjangoFilterBackend,)
    filterset_fields = ['name', 'shop_price']

测试删除get_paginated_response, 过滤器会生效 不知道是什么问题 是否有解决办法

版本

  • Django 2.0
  • djangorestframework 3.11.0
  • django-filter 2.2.0
写回答

2回答

bobby

2020-03-28

你这里说的是重写这个方法导致了filter失败了? 失败是搜索不出来数据还是有异常信息?

0
5
bobby
回复
qq_khrystal_0
好的,
2020-03-31
共5条回复

qq_khrystal_0

提问者

2020-03-27

貌似PageNumberPagination的子类 不能修改响应的字段名?

0
0

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2880 学习 · 2467 问题

查看课程