Reputation: 483
Currently, I have this serializer:
class TokenSerializer(serializers.ModelSerializer):
"""
Serializer for Token model
"""
user = UserDataSerializer(many=False, read_only=True)
class Meta:
model = TokenModel
fields = ('key', 'user')
And this is the response I get:
{
"key": "d1de7dd82f2b987a6d9f35f1d033876e164f7132",
"user": {
"username": "peter258",
"first_name": "Peter",
"last_name": "Jones",
"email": "[email protected]"
}
}
I would like to change the response so instead of saying "user" it says "data" but when I change the serializer to something like this, I only get the "key" in the response:
class TokenSerializer(serializers.ModelSerializer):
"""
Serializer for Token model
"""
data = UserDataSerializer(many=False, read_only=True)
class Meta:
model = TokenModel
fields = ('key', 'data')
How do you properly change the name of the "user" field inside nested serializers?
Upvotes: 0
Views: 1114
Reputation: 1965
You can achieve this by providing a source
argument to your UserDataSerializer
, which expects the name of the attribute that will be used to populate the field.
class TokenSerializer(serializers.ModelSerializer):
"""
Serializer for Token model
"""
data = UserDataSerializer(many=False, read_only=True, source="user")
class Meta:
model = TokenModel
fields = ('key', 'data')
Upvotes: 3