Django Rest框架-修改serializer.data

Django Rest框架-修改serializer.data,django,django-rest-framework,Django,Django Rest Framework,我认为我正在做以下工作- def retrieve(self, request, pk=None): queryset = MyClass.objects.all() class_data = get_object_or_404(queryset, pk=pk) serializer = self.get_serializer(class_data) new_data = serializer.data.copy() new_data['my_field'

我认为我正在做以下工作-

def retrieve(self, request, pk=None):
    queryset = MyClass.objects.all()
    class_data = get_object_or_404(queryset, pk=pk)
    serializer = self.get_serializer(class_data)
    new_data = serializer.data.copy()
    new_data['my_field'] = 'updated info!'
    serializer = self.get_serializer(data=new_data)
    serializer.is_valid()
    return Response(serializer.data)
我希望不必复制序列化程序数据来更新信息。是否有方法在通过视图显示之前修改序列化程序中的字段

编辑-

serializer.data['my_field'] = 'updated info!'

除非我复制,否则不起作用。

简单的解决方案就是设置检索到的对象属性(
class\u data.my\u field='updated info!'

在我的例子中,我需要用一些exta dict更新serializer.data。 我用下面的方法求解,合并了有序的dicts serializer.data[0]和额外的dict

参考:

from itertools import chain
from collections import OrderedDict
class MyCreationApiView(generics.CreateAPIView):
    def create(self, request, *args, **kwargs):
        data = ...
         serializer = self.get_serializer(data=data, many=True, required=True,
                                         context={'request': self.request, 'search': search})
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        extra_dict = {'test': []}
 return Response([OrderedDict(chain(serializer.data[0].items(), extra_dict.items()))], status=status.HTTP_201_CREATED).