待解决方案,但我所看到的是,我需要按照此处的文档实际创建自定义渲染器 -
http://django-rest-framework.org/api-guide/renderers
我知道这是因为文件“renderers.py”中的XML输出中的相同数据存在XMLRenderer
如果我改变,使用下面的例子,“list-item”作为表/模型名称,我得到了我想要的输出,所以我将调查创建一个自定义渲染器。
我有一个看起来像这样的json输出 -
{
"trgmst_id": 224,
"trgjob_id": 22652,
"jobmst_id": 10079,
"trgjob_order": 2,
"trgjob_type": 0,
"trgjob_level": 0
}
但我希望它看起来像这样 -
{
"trgjob": {
"trgmst_id": 224,
"trgjob_id": 22652,
"jobmst_id": 10079,
"trgjob_order": 2,
"trgjob_type": 0,
"trgjob_level": 0
}
}
如何让我的序列化程序或视图包含模型名称?
这是我的序列化程序 -
class TrgjobSerializer(serializers.ModelSerializer):
class Meta:
model = Trgjob
以下是我的观点 -
@csrf_exempt
def trgjob_detail(request, pk):
"""
Retrieve, update or delete a code snippet.
"""
try:
DEV = Trgjob.objects.using('database1').filter(jobmst_id=pk)
except Trgjob.DoesNotExist:
return HttpResponse(status=404)
if request.method == 'GET':
serializer = TrgjobSerializer(DEV, many=True)
return JSONResponse(serializer.data)
这是JSONResponse -
class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
答案 0 :(得分:1)
一种选择是在视图中构造所需的输出。例如
from rest_framework.response import Response
def view(request):
...
serializer = TrgJobSerializer(DEV, many=True)
response = {'trgjob': serializer.data}
return Response(response)
JSONRenderer仍将处理渲染到JSON,例如将False
转换为false
等