Python 如何将非模型字段添加到DRF';s序列化程序响应dict?

Python 如何将非模型字段添加到DRF';s序列化程序响应dict?,python,django,api,serialization,django-rest-framework,Python,Django,Api,Serialization,Django Rest Framework,如何向serializer.data dict添加一个额外字段(非模型字段)?我想在发送回复之前添加(“状态”:“可用”)。我试过这个- if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) 我还想在发送响应之前修改serializer.data的字段名。有没有办法做到这一点 您可以向序列化程序添加一个额外字段,如下

如何向serializer.data dict添加一个额外字段(非模型字段)?我想在发送回复之前添加(“状态”:“可用”)。我试过这个-

if serializer.is_valid():
    serializer.save()
    return Response(serializer.data, status=status.HTTP_201_CREATED)

我还想在发送响应之前修改serializer.data的字段名。有没有办法做到这一点

您可以向序列化程序添加一个额外字段,如下所示:




更改字段名的一种方法是使用中间件类格式化响应。如果我必须格式化整个API的响应,我会这样做。

在创建新对象时,将状态字段添加到序列化程序会导致POST出现问题。我的模型中没有任何名为“status”的字段,我不想要它。因此,如果我在此处添加状态字段,序列化POST请求可能会产生问题。它不会产生问题,因为您可以将其设置为只读。
class Meta:
model=MyModel
只读字段=('status',)
@norbert.mate您可以编辑答案并添加这些详细信息。
if serializer.is_valid():
    serializer.save()
    ## This one doesn't work as serializer.data is of the type 'ReturnDict' 
    serializer.data.append(("status","available")) 
    ## OR
    serializer.data["status"]  = "available"
    return Response(serializer.data, status=status.HTTP_201_CREATED)
class MySerializer(serializers.ModelSerializer)
    status = serializers.SerializerMethodField('get_status')

    class Meta: 
        model = MyModel
        read_only_fields = ('status',)

    def get_status(self, obj):
        """ Get the current objects status """
        if obj.available == 1:
            return 'available'
        else:
            return 'not available'