Python 动态修改Django Rest框架中的序列化程序字段

Python 动态修改Django Rest框架中的序列化程序字段,python,django,rest,frameworks,django-rest-framework,Python,Django,Rest,Frameworks,Django Rest Framework,我试图使用django rest框架文档中描述的高级序列化程序用法。动态修改序列化程序字段的步骤 这是我的序列化程序类: class MovieSerializer(serializers.ModelSerializer): moviework_work = MovieWorkSerializer(many=True) def __init__(self, *args, **kwargs): # Don't pass the 'fields' arg up t

我试图使用django rest框架文档中描述的高级序列化程序用法。动态修改序列化程序字段的步骤

这是我的序列化程序类:

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\u class
设置为类的实例,而不是类。您需要将
dropfields
设置为类的一个属性(就像您链接到的文档示例中的
fields
一样),或者您需要考虑覆盖viewset()的
get\u serializer
方法.

我知道
序列化程序\u class
不是一个类,但我无法理解这个答案,因为链接似乎过时了。你能更新链接吗?或者举一个例子来回答所提出的问题?上面指向高级序列化程序用法的链接返回404。以下是更新的链接: