假设我有一个如下的视图:
class FooView(ListAPIView):
serializer_class = FooSerializer
pagination_class = FooPagination
它返回一个典型的分页响应,例如:
{
"count":2,
"next":null,
"previous":null,
"results":[
{
"id":1,"name":"Josh"
},
{
"id":2,"name":"Vicky"
}]
}
如何(如果可能的话)将自定义字段添加到此响应中,以使结果如下所示?
{
"count":2,
"next":null,
"previous":null,
"custom":"some value",
"results":[
{
"id":1,"name":"Josh"
},
{
"id":2,"name":"Vicky"
}]
}
假设“某个值”以适当的方法计算并存储,例如:
def get_queryset(self):
self.custom = get_custom_value(self)
# etc...
4条答案
按热度按时间cqoc49vn1#
另一个可能的解决方案是在响应中添加自定义字段,不需要重写Pagination类
zour9fqk2#
您需要覆盖
FooPagination
类中的get_paginated_response()
,以便在响应中添加自定义字段。您可以执行以下操作:
mkh04yzy3#
在Rahul Gupta的答案的修改版本中,我们可以更新get_paginated_response函数返回的数据,只需向OrderedDict添加一个自定义字段。这将保持超类方法的完整性,将来如果超方法发生任何新的更改,它将不会影响
vhipe2zx4#