Dynamically include or exclude Serializer class fields

后端 未结 3 650
名媛妹妹
名媛妹妹 2021-02-09 05:56

In my User profile model I\'ve included a show_email field explicitly. So, to add this feature to my API, the UserSerializer class looks like this:

3条回答
  •  庸人自扰
    2021-02-09 06:26

    You could override restore_fields method on serializer. Here in restore_fields method you can modify list of fields - serializer.fields - pop, push or modify any of the fields.

    eg: Field workspace is read_only when action is not 'create'

    class MyPostSerializer(ModelSerializer):
    
    def restore_fields(self, data, files):
        if (self.context.get('view').action != 'create'):
            self.fields.get('workspace').read_only=True
        return super(MyPostSerializer, self).restore_fields(data, files)
    
    class Meta:
        model = MyPost
        fields = ('id', 'name', 'workspace')
    

提交回复
热议问题