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)