ListAPIView的默认返回值:
四个字段,我想要多添加一个字段top_count.
方法一:重写GenericAPIView里面get_paginated_response方法
def get_paginated_response(self, data):
"""
Return a paginated style `Response` object for the given output data.
"""
assert self.paginator is not None
return self.paginator.get_paginated_response(data)
可以看到调用的还是分页类中的get_paginated_response的方法,直接在该方法中返回需要的字段就可以:
def get_paginated_response(self, data):
"""
Return a paginated style `Response` object for the given output data.
"""
assert self.paginator is not None
# return self.paginator.get_paginated_response(data)
return Response(OrderedDict([
('top_count', 10000),
('count', self.paginator.page.paginator.count),
('next', self.paginator.get_next_link()),
('previous', self.paginator.get_previous_link()),
('results', data)
]))
方法二:继承分页类,重写分页类的get_paginated_response方法
from rest_framework.pagination import PageNumberPagination
class MyPagination(PageNumberPagination):
def get_paginated_response(self, data):
return Response(OrderedDict([
('top_count', 10000),
('count', self.page.paginator.count),
('next', self.get_next_link()),
('previous', self.get_previous_link()),
('results', data)
]))
只需要在试图类中指定自己定义的分页类即可
结果: