Updating our serializer
Now that snippets are associated with the user that created them, let's update our SnippetSerializer
to reflect that. Add the following field to the serializer definition in serializers.py
:
owner = serializers.ReadOnlyField(source='owner.username')
Note: Make sure you also add 'owner',
to the list of fields in the inner Meta
class.
This field is doing something quite interesting. The source
argument controls which attribute is used to populate a field, and can point at any attribute on the serialized instance. It can also take the dotted notation shown above, in which case it will traverse the given attributes, in a similar way as it is used with Django's template language.
The field we've added is the untyped ReadOnlyField
class, in contrast to the other typed fields, such as CharField
, BooleanField
etc… The untyped ReadOnlyField
is always read-only, and will be used for serialized representations, but will not be used for updating model instances when they are deserialized. We could have also used CharField(read_only=True)
here.