Reputation: 365
I need to have a serializer that returns data with illegal character inside dictionary key, what I would like is :
class MyModel(models.Model):
my_field = model.TextField()
...
serializer = MySerializer(django_object)
serializer.data
# returns {'my-field' : "value"}
I have tried using serializers.SerializerMethodField
but target field name must be Python valid.
class MySerializer(serializers.Serializer):
my-field = serializers.SerializerMethodField(method_name="get_my_field")
# ^ this fail to be interpreted by Python
def get_my_field(self, obj):
return obj.my_field
using source
as an argument to any Serializer fails for the same reason.
Upvotes: 1
Views: 646
Reputation: 344
You can simple override to_representation
method. e.g.
class MySerializer(serializers.Serializer):
my_field = serializers.CharField(source="MY-FIELD") # only if need source
def to_representation(self, instance):
data = super().to_representation(instance)
data["MY-FIELD"] = data.pop("my_field", "")
return data
Upvotes: 2