擅长:python、mysql、java
<p>答案取决于您使用的是哪种类型的视图,但底线是您不会在<code>get_queryset</code>中执行此操作,而是在reguest类型的方法中执行的。在</p>
<p>例如,如果您使用的是<a href="https://github.com/encode/django-rest-framework/blob/master/rest_framework/generics.py#L204" rel="nofollow noreferrer">RetrieveAPIView</a>,您应该从<a href="https://github.com/encode/django-rest-framework/blob/master/rest_framework/mixins.py#L51" rel="nofollow noreferrer">RetrieveModelMixin</a>重写<code>retrieve</code>方法,如下所示:</p>
<pre class="lang-py prettyprint-override"><code>class MyAPIView(RetrieveAPIView):
queryset = MyModel.objects.all()
serializer_class = MySerializer
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
data = {
"collection": {
"data": serializer.data
},
"statusCode": 200,
"version": "1.0"
}
return Response(data)
</code></pre>
<p>如果您使用的是其他类似于ListAPIView的东西,那么您需要查看它在相关方法中使用了什么,并重写它来包装数据。在</p>
<p>这里要认识到的主要问题是它与获取queryset无关,它只是从数据库中获取数据。这是关于在发回响应时将数据转换为正确的格式。因此,这项工作应该在作出回应的时候完成。在</p>