DEV Community

Cover image for Django Rest Framework: Map Values Before Serializing and Deserializing
Ashutosh Bhadoria
Ashutosh Bhadoria

Posted on

Django Rest Framework: Map Values Before Serializing and Deserializing

When serializing and deserializing data using a serializer, you may want to map the values of certain fields before they are serialized or after they are deserialized. One common use case for this is to transform the data to match a specific format required by your API or application.

To map values while serializing and deserializing, you can use the serializer's to_representation and to_internal_value methods, respectively. These methods are called when the serializer is used to serialize and deserialize data. You can override these methods to implement your custom value mapping logic.

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)
Enter fullscreen mode Exit fullscreen mode

In this example, the to_representation method is overridden to map the value of the my_field field to lowercase before serialization, and the to_internal_value method is overridden to map the value of the my_field field to uppercase after deserialization. The methods first call the parent implementation to perform the default serialization and deserialization logic, and then apply the custom value mapping.

By doing this, the mapped value will be returned during serialization, and the mapped value will be stored in the database after deserialization.

Top comments (0)