gpt4 book ai didi

python - Django Rest Framework - APIView 分页

转载 作者:太空狗 更新时间:2023-10-29 17:32:47 25 4
gpt4 key购买 nike

我有一个非常简单的APIView,但我不知道如何在这里设置分页。在这种情况下,我选择一个具有给定 pkEvent,然后我获得分配给此 Event 的所有 NewsItems

pagination_class = LimitOffsetPagination 当我在 ListCreateAPIView 开头定义查询集时工作正常,例如。 queryset = Event.objects.all() 但不使用自定义 get:

class EventNewsItems(APIView):
pagination_class = LimitOffsetPagination

def get(self, request, pk, format=None):

#user = request.user
event = Event.objects.get(pk=pk)
news = event.get_news_items().all()

serializer = NewsItemSerializer(news, many=True, context={'request':request})
response = Response(serializer.data, status=status.HTTP_200_OK)
return response

已解决:

def get(self, request, pk, format=None):

#user = request.user
event = Event.objects.get(pk=pk)
news = event.get_news_items().all()
paginator = LimitOffsetPagination()
result_page = paginator.paginate_queryset(news, request)
serializer = NewsItemSerializer(result_page, many=True, context={'request':request})
response = Response(serializer.data, status=status.HTTP_200_OK)
return response

最佳答案

另一种选择是从分页类继承,对 View 类的更改较少:

from rest_framework.pagination import LimitOffsetPagination

class EventNewsItems(APIView, LimitOffsetPagination):

def get(self, request, pk, format=None):
event = Event.objects.get(pk=pk)
news = event.get_news_items().all()

results = self.paginate_queryset(news, request, view=self)
serializer = NewsItemSerializer(results, many=True)
return self.get_paginated_response(serializer.data)

关于python - Django Rest Framework - APIView 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com