DRF ListAPIView 自定义返回不是一个对象

我想自定义ListAPIView来返回自定义对象。默认情况下,DRF返回的是一个数组中的对象,我想只返回一个自定义的对象。

class PostDetailApiView(ListAPIView, CreateAPIView):
    serializer_class = PostSerializer
    permission_classes = [AllowAny]

    def get_queryset(self, request, *args, **kwargs):
        response = super().get_queryset(request, *args, **kwargs)

        return Response({
                'status': 200,
                'message': 'Post delivered!!',
                'data': response.data
            })

我得到了一个错误。

lib/python3.7/site-packages/django/template/response.py", line 120, in __iter__
    'The response content must be rendered before it can be iterated over.'
**django.template.response.ContentNotRenderedError: The response content must be rendered before it can be iterated over.**
[03/May/2020 02:34:14] "GET /en-us/blog/api/posts/VueJS%20blog%20in%20progress HTTP/1.1" 500 59

当我返回一个空数组时,错误就消失了,比如……。

def get_queryset(self):
    queryset = []
    queryset.append(Post.objects.get(title=self.kwargs["title"]))
    return queryset

我怎么能从基于类的视图中返回一个这样的对象?

{
    "status": 200,
    "message": "Post created!",
    "data": {}
}

谢谢你

解决方案:

# You just need to override your class from APIView class and write your custom response

from rest_framework.views import APIView

class PostDetailApiView(APIView):
    permission_classes = [AllowAny]

    def get(self, request, format=None):
        title = request.data.get("title")
        post = Post.objects.filter(title=title).values('title')

        return Response({
            'status': 200,
            'message': 'Post delivered!!',
            'data': list(post)
        })

给TA打赏
共{{data.count}}人
人已打赏
未分类

类型错误:在使用flask在数据库上执行原始查询时,并非所有的参数都在字符串格式化过程中转换。

2022-9-23 11:23:00

未分类

无法使用'read_sql'来调用SQL查询类。

2022-9-23 11:33:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索