Additional field while serializing django rest framework

I see two ways here (I prefer the first way since you can reuse it in other parts of the app):

add a calculated property to your model and add it to your serializer
by using a readonly field with source=

# models.py
class Employees(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    @property
    def full_name(self):
        return self.first_name + self.last_name

# serializers.py
class EmployeeSerializer(serializers.ModelSerializer):
    full_name = serializers.Field(source="full_name")

    class Meta:
        model = Employees
        fields = ('first_name','last_name', 'full_name')

by using SerializerMethodField
(your model unchanged)

class EmployeeSerializer(serializers.ModelSerializer):
    full_name = serializers.SerializerMethodField('get_full_name')

    def get_full_name(self, obj):
        return obj.first_name + obj.last_name

    class Meta:
        model = Employees
        fields = ('first_name','last_name', 'full_name')

Leave a Comment