JSON根目录中的自定义字段在Django Rest Framework ListApiView中产生

时间:2019-04-07 09:52:47

标签: django django-rest-framework

django rest框架中ListApiView的结果如下:

{
"count": 1023
"next": "https://api.example.org/accounts/?page=5",
"previous": "https://api.example.org/accounts/?page=3",
"results": [
   …
]
}

如何在JSON结果的根目录中而不是在结果列表中添加自定义字段?

{
"my_custom_field": ...
"count": 1023
"next": "https://api.example.org/accounts/?page=5",
"previous": "https://api.example.org/accounts/?page=3",
"results": [
   …
]
}

1 个答案:

答案 0 :(得分:1)

您需要修改pagination_class。创建一个新的分页类并根据需要覆盖get_paginated_response方法。

class Pagination(PageNumberPagination):

    def get_paginated_response(self, data):
        return Response({
            'my_custom_field': ....,
            'next': self.get_next_link(),
            'previous': self.get_previous_link(),
            'count': self.page.paginator.count,
            'results': data
        })

class SomeViewSet(ModelViewSet):
    pagination_class = Pagination
    ...

Pagination类中,观察get_paginated_response,您可以在那里拥有自己的字段。