Django-Rest-Framework,如何从结果中删除元数据
Django-Rest-Framework, how to remove metadata from results
我设置了 ListApiView,用于 JQuery UI 自动完成。
它过滤正确,但结果包含一些元数据
{
"count": 710,
"next": "http://127.0.0.1:8000/taxonomy/lookup/?term=hom&page=3",
"previous": "http://127.0.0.1:8000/taxonomy/lookup/?term=hom&page=1",
"results": [
{
"label": "Homaledra sabalella",
"value": "Homaledra sabalella"
},
{
"label": "Homaledra sabalella (Chambers, 1880)",
"value": "Homaledra sabalella (Chambers, 1880)"
},
.....
...
}
}
我在哪里可以配置它以便我只 return "results" 列表?
环顾文档,它似乎是渲染器。如何在 ListApiView 中进行设置?
那些 "metadata" 来自 PaginationSerializer
,
默认的 list
方法将您的 serializer_class
包装成 PaginationSerializer
.
您可以覆盖 list
方法:
class ViewSet(GenericViewSet):
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
# If you want response all the results, without pagination,
# stop calling the self.paginate_queryset method, use queryset directly
page = self.paginate_queryset(queryset) or queryset
serializer = self.get_serializer(page, many=True)
return Response(serializer.data)
我设置了 ListApiView,用于 JQuery UI 自动完成。 它过滤正确,但结果包含一些元数据
{
"count": 710,
"next": "http://127.0.0.1:8000/taxonomy/lookup/?term=hom&page=3",
"previous": "http://127.0.0.1:8000/taxonomy/lookup/?term=hom&page=1",
"results": [
{
"label": "Homaledra sabalella",
"value": "Homaledra sabalella"
},
{
"label": "Homaledra sabalella (Chambers, 1880)",
"value": "Homaledra sabalella (Chambers, 1880)"
},
.....
...
}
}
我在哪里可以配置它以便我只 return "results" 列表? 环顾文档,它似乎是渲染器。如何在 ListApiView 中进行设置?
那些 "metadata" 来自 PaginationSerializer
,
默认的 list
方法将您的 serializer_class
包装成 PaginationSerializer
.
您可以覆盖 list
方法:
class ViewSet(GenericViewSet):
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
# If you want response all the results, without pagination,
# stop calling the self.paginate_queryset method, use queryset directly
page = self.paginate_queryset(queryset) or queryset
serializer = self.get_serializer(page, many=True)
return Response(serializer.data)