Skip to main content
 首页 » 编程设计

python之如何将非模型字段添加到 DRF 的序列化程序响应字典中

2025年05月04日14三少

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

如何向 serializer.data dict 添加一个额外的字段(非模型字段)?我想在发送响应之前添加 ("status": "available") 。我试过这个 -

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) 

我还想在发送响应之前修改 serializer.data 的字段名称。有什么办法吗?

请您参考如下方法:

您可以像这样向序列化程序添加一个额外的字段:


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' 

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