如何更新DRF中的serializer.validated_data

时间:2018-03-02 16:24:50

标签: django-rest-framework

美好的一天

我需要更新validated_data dict

例如

class ProductsApiView(APIView):
    permission_classes = [AllowAny]

def post(self, request):
    serializer = ProductSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    product = serializer.save()
    print(serializer.validated_data)
    return Response({'message': 'created'}, status=status.HTTP_201_CREATED)



class ProductSerializer(serializers.ModelSerializer):

    def create(self, validated_data):
        validated_data['my_data'] = 'my_new_data'
        return super(ProductSerializer, self).create(validated_data)

    class Meta:
        model = Product
        fields = ['id', 'title']

当我制作print(serializer.validated_data)

OrderedDict([('title', 'testttt')])

为什么在dict中没有我的数据" my_data" ?

1 个答案:

答案 0 :(得分:0)

通过在实例化序列化程序时传递上下文参数,可以提供任意附加上下文。例如:

serializer = AccountSerializer(account, context={'request': request})
serializer.data

通过访问self.context属性,可以在任何序列化器字段逻辑中使用上下文字典,例如自定义.to_representation()方法。

Reference