首页 > 解决方案 > 返回数据格式,如默认 DRF

问题描述

我花了太多时间试图弄清楚如何格式化查询集并让 drf 返回它,就像它的默认 GET 请求的样子一样。

前任。获取请求看起来像一个对象列表:

[{
        "id": 1093,
        "manytomanyrelation": [
            108793,
            108792,
            108791
        ],
        "count": 3,
},
{
        "id": 1092,
        "manytomanyrelation": [
            108793,
        ],
        "count": 5,
}]

我的 post 请求需要返回一个对象列表,就像上面一样:代码:

@list_route(methods=['post'])
def mymethod(self, request, *args, **kwargs):
    data = MyModel.objects.filter(**params)
    response = serializers.serialize('json', list(data))
    return HttpResponse(response, content_type='application/json')

但这会返回具有 pk、模型、字段格式的对象:

[{
    fields:{
            "manytomanyrelation": [
                108793,
                108792,
                108791
            ],
            "count": 3,
    }
    model: "app.mymodel"
    pk: 1093
},
{
    fields:{
            "manytomanyrelation": [
                108793,
            ],
            "count": 5,
    }
    model: "app.mymodel"
    pk: 1092
}]

如果数据中有不一致的地方,我删除了一些字段和名称,非常抱歉。

有没有办法将响应对象格式化为看起来像 drf 默认 GET?

标签: pythondjangodjango-rest-framework

解决方案


您可以序列化您的模型 ( MyModel),您可以在其中指定响应中的对象的外观。

检查文档


推荐阅读