+-
python – Django Rest Framework分页极其缓慢计数
我在Django Rest框架中进行了分页,看起来速度非常慢. Count看起来像罪魁祸首,由于表中数百万行,每次返回都要花费数百毫秒.

我使用postgresql作为数据库.有没有办法不计算行数仍然使用分页?如果我手动过滤了查询集,则在启用此功能之前性能很好.

最佳答案
覆盖分页类的get_paginated_response方法,不包括计数.您可以参考PageNumberPagination类的 base implementation来查看您应该返回的内容.

from rest_framework.pagination import PageNumberPagination
from collections import OrderedDict # requires Python 2.7 or later

class PageNumberPaginationWithoutCount(PageNumberPagination):
    # Set any other options you want here like page_size

    def get_paginated_response(self, data):
        return Response(OrderedDict([
            ('next', self.get_next_link()),
            ('previous', self.get_previous_link()),
            ('results', data)
        ]))

然后在settings.py中,将DEFAULT_PAGINATION_CLASS设置为新的分页类.

DEFAULT_PAGINATION_CLASS = 'path.to.PageNumberPaginationWithoutCount'

这种方法在example in the pagination docs中使用.

编辑:从下面的评论中听起来这可能不足以阻止慢速SQL查询,因此您可能还需要覆盖paginate_queryset.

点击查看更多相关文章

转载注明原文:python – Django Rest Framework分页极其缓慢计数 - 乐贴网