为什么这个视图是即时的,而这个视图非常慢

时间:2017-11-21 10:30:39

标签: django django-rest-framework django-views

我的第一个观点:

class BienAll(generics.ListAPIView):
    queryset = FacebookBien.objects.all()
    pagination_class = SmallPagesPagination
    def get(self, request, *args, **kwargs):
        serializer = FacebookBienSerializer(self.queryset.all(), many=True)
        page = self.paginate_queryset(serializer.data)
        return self.get_paginated_response(page)

我的第二个观点:

class Test(generics.ListAPIView):
    queryset = FacebookBien.objects.all()
    pagination_class = SmallPagesPagination
    serializer_class = FacebookBienSerializer

我的第二个观点是即时的,但我的第一个观点很慢,我不明白为什么。

1 个答案:

答案 0 :(得分:0)

我猜测分页发生的顺序。

在第一个中,序列化所有数据,然后再次访问它以对其子集进行分页。我希望DRF在获取所有项目之前足够聪明,可以分页。

如果你想要类似的结果,那么在对序列化它之前将你的paginator返回的项目数量切换为查询集 - 但是使用第二个版本要好得多。