Skip to content Skip to sidebar Skip to footer

Django Rest Framework: De Serializing A String To An Integer And Vice Versa

We are using Django Rest framework to serialise and deserialise json response from a third party API. I need to translate the string field values to a numeric value in our system.

Solution 1:

To display string instead of int you can use get_FOO_display model's attribute. To convert string to int during creation process you can override create() method like this:

classResultsSeializer(serializers.ModelSerializer):
    inferred_result = serializers.CharField(source='get_inferred_result_display')

    classMeta:
        model = models.Experiment
        fields = ('inferred_result',) 

    defcreate(self, validated_data):
        dispplayed = validated_data.pop('get_inferred_result_display')
        back_dict = {k:v for v, k in models.Experiment.RESULTS}
        res = back_dict[dispplayed]
        validated_data.update({'inferred_result': res})
        returnsuper(ResultsSeializer, self).create(validated_data)

Same way you need to override update() if you need.

Post a Comment for "Django Rest Framework: De Serializing A String To An Integer And Vice Versa"