脚本的哪一部分使JSON API作为Django Rest Framework中的对象数组返回?

时间:2018-08-09 13:48:50

标签: django-rest-framework

我使用ListAPIView实现了JSON API。我只是想知道脚本的哪一部分使JSON API以如下所示的对象数组形式返回。
enter image description here 任何人都可以指出,如果我只想返回对象,该在哪里更改?
Views.py

class summaryData(generics.ListAPIView):
    serializer_class=summarySerializer

    def get_queryset(self):
        pk=self.kwargs['pk']
        key=self.kwargs['keyword']

        return summary.objects.filter(html__pk=pk).filter(keyword=key)

serializer.py

class strToJson(serializers.CharField):

    def to_representation(self,value):
        x=JSON.loads(value)
        return x

class summarySerializer(serializers.ModelSerializer):
    project=serializers.CharField(read_only=True,source="html.project")
    version = serializers.CharField(read_only=True, source="html.version")
    json = strToJson()

    class Meta:
        model=summary
        fields=('project','version','json')

2 个答案:

答案 0 :(得分:1)

您正在使用generics.ListAPIView,这意味着您的意图是获取所有对象的列表,因此generics.ListAPIView提供了对象数组。在此博客中查看ref

答案 1 :(得分:1)

因为要获得单个对象,所以要使用RetrieveAPIView(或变体)。这将对应于“摘要详细信息” URL(而不是“摘要列表” URL,其中ListAPIView是有意义的)。它应该大致如下所示:

您的路径/urls.py:

urlpatterns = [
    ...
    url(r'^summaries/(?P<pk>[0-9]+)/$', views.SummaryDetail.as_view()),
]

您的路径/views.py:

class SummaryDetail(generics.RetrieveAPIView):
    queryset = Summary.objects.all()
    serializer_class = summarySerializer