Django Rest Framework How to update SerializerMethodField

前端 未结 2 398
野性不改
野性不改 2021-01-07 23:43

I have a serializer like this:

class PersonSerializer(serializers.ModelSerializer):
    gender = serializers.SerializerMethodField()
    bio = BioSerializer(         


        
2条回答
  •  滥情空心
    2021-01-08 00:20

    Aside from accepted answer, there can be other simpler hooks. If 'create' and 'update' worked as you wanted before modifiying gender field, then you can do as follow to get everything to default for create and update requests.

    • Override the __init__ method . .
    class PersonSerializer(serializers.ModelSerializer):
        bio = BioSerializer()
        
         def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
            try:
                if self.context['request'].method in ['GET']:
                    self.fields['gender'] = serializers.SerializerMethodField()
            except KeyError:
                pass
    
        class Meta:
            model = Person
            fields = UserSerializer.Meta.fields + ('bio',)
    
        def get_gender(self, obj):
            return obj.get_gender_display()   
           
    ...
    

提交回复
热议问题