I have a serializer like this
class SomeSerializer(serializers.Serializer):
id = serializers.UUIDField(required=False, default=uuid.uuid4)
anotherId = serializers.UUIDField(required=False, default = ????)
and i want to set field 'anotherId' same as 'id' by default.
This is what I expect
s = SomeSerializer(data={}).
data = s.data
data.id # return '56e34c58-be7d-4c7c-992a-43080faf5614'
data.anotherId # return '56e34c58-be7d-4c7c-992a-43080faf5614' (as id)
I tried to do it like here but it didn't work
class SomeSerializer(serializers.Serializer):
id = serializers.UUIDField(required=False, default=uuid.uuid4)
anotherId = serializers.UUIDField(required=False, default = id.get_default())
How can this be done?
You can use to_representation
method for that:
class SomeSerializer(serializers.Model):
id = serializers.UUIDField(required=False, default=uuid.uuid4)
another_id = serializers.UUIDField(required=False)
def to_representation(self, instance):
data = super().to_representation(instance)
if not data.get('another_id', None):
data['another_id'] = data['id']
return data