DJANGO REST框架:序列化和应对之前的地图值
#python #django #休息

使用序列化器序列化和进行序列化数据时,您可能需要在某些字段被序列化之前或之后绘制它们的值。一个常见的用例是转换数据以匹配您的API或应用程序所需的特定格式。

要在序列化和进行序列化时映射值,您可以分别使用序列化器的to_representationto_internal_value方法。当使用序列化数据序列化和应对数据时,这些方法被调用。您可以覆盖这些方法以实现自定义值映射逻辑。

class MySerializer(serializers.Serializer):
    my_field = serializers.CharField()

    def to_representation(self, instance):
        # Map the value of my_field to lowercase before serialization
        data = super().to_representation(instance)
        data['my_field'] = data['my_field'].lower()
        return data

    def to_internal_value(self, data):
        # Map the value of my_field to uppercase after deserialization
        data['my_field'] = data['my_field'].upper()
        return super().to_internal_value(data)

在此示例中,to_representation方法被覆盖以在序列化之前将my_field字段的值映射到小写,而to_internal_value方法被覆盖以在避免后映射my_field字段的值为大写。该方法首先调用父实现以执行默认序列化和避免逻辑,然后应用自定义值映射。

通过执行此操作,映射值将在序列化期间返回,并且映射值将在避免后的数据库中存储。