我花了太多时间试图弄清楚如何格式化查询集并使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?
答案 0 :(得分:1)
您可以序列化模型(MyModel
),在其中可以指定响应中对象的外观。
检查docs
答案 1 :(得分:0)
serializers.serialize以这种pk,fields格式格式化对象。 问题是我需要使用self.get_serializers来获取正确的序列化器类