我的第一个观点:
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
我的第二个观点是即时的,但我的第一个观点很慢,我不明白为什么。
答案 0 :(得分:0)
我猜测分页发生的顺序。
在第一个中,序列化所有数据,然后再次访问它以对其子集进行分页。我希望DRF在获取所有项目之前足够聪明,可以分页。
如果你想要类似的结果,那么在对序列化它之前将你的paginator返回的项目数量切换为查询集 - 但是使用第二个版本要好得多。