加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在Django Rest Framework中动态修改序列化器字段

发布时间:2020-12-16 21:50:34 所属栏目:Python 来源:网络整理
导读:我正在尝试使用django rest框架文档中描述的高级序列化程序用法. http://django-rest-framework.org/api-guide/serializers.html#advanced-serializer-usage动态修改序列化器字段 这是我的序列化程序类: class MovieSerializer(serializers.ModelSerializer

我正在尝试使用django rest框架文档中描述的高级序列化程序用法. http://django-rest-framework.org/api-guide/serializers.html#advanced-serializer-usage动态修改序列化器字段

这是我的序列化程序类:

class MovieSerializer(serializers.ModelSerializer):
    moviework_work = MovieWorkSerializer(many=True) 

    def __init__(self,*args,**kwargs):
        # Don't pass the 'fields' arg up to the superclass
        dropfields = kwargs.pop('dropfields',None)

        # Instantiate the superclass normally
        super(MovieSerializer,self).__init__(*args,**kwargs)

        if dropfields:
            # Drop fields specified in the `fields` argument.
            banished = set(dropfields)
            for field_name in banished:
                self.fields.pop(field_name)
    class Meta:
        model = Movie
        fields = ('field1','field2','moviework_work')

这是我的观点

class MovieFromInterpreterViewSet(viewsets.ModelViewSet):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer(dropfields=('moviework_work',))

我收到此错误:

TypeError: 'MovieSerializer' object is not callable
最佳答案
请注意,您将serializer_class设置为不是类,而是设置为类的实例.您需要将dropfields设置为类的属性(就像它链接到的文档示例中的字段一样),或者您需要查看覆盖视图集的get_serializer方法(docs).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读