Python Can';t向serializer.data django rest添加字段
我有一个按ID显示项目的视图。我想在响应中再添加一个值,但由于某些原因它没有添加Python Can';t向serializer.data django rest添加字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个按ID显示项目的视图。我想在响应中再添加一个值,但由于某些原因它没有添加 class ProjectApiView(APIView): def get(self, request, project_id=None): if project_id: project = Project.objects.get(id=project_id) serializer = ProjectSerializer(project)
class ProjectApiView(APIView):
def get(self, request, project_id=None):
if project_id:
project = Project.objects.get(id=project_id)
serializer = ProjectSerializer(project)
serializer.data["all_users"] = 'test'
print(serializer.data)
return JsonResponse({'project': serializer.data})
class ProjectApiView(APIView):
def get(self, request, project_id=None):
if project_id:
project = Project.objects.get(id=project_id)
serializer = ProjectSerializer(project)
result = serializer.data
result['all_users'] = 'test'
print(result)
return JsonResponse({'project': result})
序列化程序.data
{'id': 2, 'name': 'test 2', 'prototype': OrderedDict([('id', 1), ('device_name', 'iphone'), ('width', 900), ('height', 1200), ('image', '/media/blank'), ('image_hover', '/media/blank')]), 'colors': {}}
这是因为。因此,获取.data
属性的值,然后处理该结果,但该结果不是存储在序列化程序中的对象。如果下次使用serializer.data
,则属性后面的方法将再次运行,当然不会考虑上一次运行的结果
但是,您可以简单地从序列化程序检索数据,然后更改序列化程序的结果:
我有一个按ID显示项目的视图。我想在响应中再添加一个值,但由于某些原因它没有添加
class ProjectApiView(APIView):
def get(self, request, project_id=None):
if project_id:
project = Project.objects.get(id=project_id)
serializer = ProjectSerializer(project)
serializer.data["all_users"] = 'test'
print(serializer.data)
return JsonResponse({'project': serializer.data})
class ProjectApiView(APIView):
def get(self, request, project_id=None):
if project_id:
project = Project.objects.get(id=project_id)
serializer = ProjectSerializer(project)
result = serializer.data
result['all_users'] = 'test'
print(result)
return JsonResponse({'project': result})
类项目APIView(APIView):
def get(self、request、project_id=None):
如果项目id为:
project=project.objects.get(id=project\u id)
序列化程序=项目序列化程序(项目)
结果=serializer.data
结果['all_users']='test'
打印(结果)
返回JsonResponse({'project':result})