返回数据格式,例如默认DRF

时间:2019-03-20 20:49:49

标签: python django django-rest-framework

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

例如获取请求看起来像是一个对象列表:

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

我的发布请求需要返回对象列表,就像上面的那样: 代码:

@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?

2 个答案:

答案 0 :(得分:1)

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

检查docs

答案 1 :(得分:0)

serializers.serialize以这种pk,fields格式格式化对象。 问题是我需要使用self.get_serializers来获取正确的序列化器类