1
我當前使用下面的視圖和串行下面分頁結果:如何從乾草堆搜索序列化django-rest-framework中的分頁對象?
views.py
class DotaSearchViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = DotaSearchSerializer
permission_classes = (IsAuthenticated,)
authentication_classes = (SessionAuthentication, BasicAuthentication)
def get_queryset(self, *args, **kwargs):
request = self.request
results = EmptySearchQuerySet()
if request.GET.get('q') is not None:
query = request.GET.get('q')
sqs = SearchQuerySet().filter(content=query)
paginator = Paginator(sqs, 10)
page = request.QUERY_PARAMS.get('page')
try:
results = paginator.page(page)
except PageNotAnInteger:
results = paginator.page(1)
except InvalidPage:
results = paginator.page(paginator.num_pages)
return results
serializers.py
class DotaSearchSerializer(serializers.Serializer):
name = serializers.CharField()
quality = serializers.CharField()
type = serializers.CharField()
rarity = serializers.CharField()
hero = serializers.CharField()
image = serializers.CharField()
desc = serializers.CharField()
class PaginatedDotaSearchItemsSerializer(pagination.PaginationSerializer):
"""
Serializes page objects of results querysets.
"""
start_index = serializers.SerializerMethodField('get_start_index')
end_index = serializers.SerializerMethodField('get_end_index')
num_pages = serializers.Field(source='paginator.num_pages')
class Meta:
object_serializer_class = DotaSearchSerializer
def get_start_index(self, page):
return page.start_index()
def get_end_index(self, page):
return page.end_index()
def get_curr_page(self, page):
return page.number
現在我不知道我的分頁序列化器設置正確,但是如何獲取它以在我的結果查詢中序列化分頁對象。
感謝