Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t向serializer.data django rest添加字段_Python_Django_Django Rest Framework - Fatal编程技术网

Python Can';t向serializer.data django rest添加字段

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)

我有一个按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})
序列化程序.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})