Additional field while serializing django rest framework

前端 未结 3 843
太阳男子
太阳男子 2021-01-30 12:46

I am a newbie to django rest framework and have created a sample Employee model.

My models.py:

class Employees(models.Model         


        
3条回答
  •  無奈伤痛
    2021-01-30 13:07

    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
    
    #serializes.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')
    

提交回复
热议问题