Результат ListApiView In django rest framework выглядит примерно так:
{
"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": [
…
]
}
вам нужно изменить свой 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
У вас там может быть свое поле.
есть ли другой способ, когда нумерация страниц не используется?
По сути, этот тип ответа возможен только в том случае, если в вашем коде есть настройки разбиения на страницы. Таким образом, чтобы изменить его, это самый простой способ.
Привет, я думаю, вы забыли задать вопрос.