Python 在响应中包括模型名称
悬而未决的解决方案,但我所看到的是,我需要实际创建一个自定义渲染器,根据这里的文档- 我知道这与“renderers.py”文件中XML输出的数据相同,其中有一个XMLRenderer 如果我更改,使用下面的示例,“list item”作为表/模型名称,我将获得所需的输出,因此我将研究创建自定义渲染器 我有一个json输出,看起来像这样-Python 在响应中包括模型名称,python,django,json,django-rest-framework,Python,Django,Json,Django Rest Framework,悬而未决的解决方案,但我所看到的是,我需要实际创建一个自定义渲染器,根据这里的文档- 我知道这与“renderers.py”文件中XML输出的数据相同,其中有一个XMLRenderer 如果我更改,使用下面的示例,“list item”作为表/模型名称,我将获得所需的输出,因此我将研究创建自定义渲染器 我有一个json输出,看起来像这样- { "trgmst_id": 224, "trgjob_id": 22652, "jobmst_id": 10079, "
{
"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
}
}
但我想让它看起来像这样-
{
"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)
一个选项是在视图中构造所需的输出。比如说
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
等。谢谢!这是迄今为止更加优雅和无缝!正如您在那里所做的那样,默认渲染器完美地拾取了所有内容!