我使用ListAPIView实现了JSON API。我只是想知道脚本的哪一部分使JSON API以如下所示的对象数组形式返回。
任何人都可以指出,如果我只想返回对象,该在哪里更改?
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')
答案 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