首页 > 解决方案 > 'MovieViewSet' 应该包含一个 `serializer_class` 属性,或者覆盖 `get_serializer_class()` 方法

问题描述

我正在尝试从 Youtube 教程构建一个项目,但我不断收到此错误:AssertionError: 'MovieViewSet' should either include a `serializer_class` attribute, or override the `get_serializer_class()` method.

这是views.py文件

class MovieViewSet(viewsets.ModelViewSet):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer

    def list(self, request, *args, **kwargs):
        movies = Movie.objects.all()
        serializer = MovieSerializer(movies, many=True)
        return Response(serializer.data)

这也是serializer.py文件:

class MovieSerializer(serializers.ModelSerializer):
    class Meta:
        model = Movie
        fields = ('id', 'title', 'desc', 'year')

我究竟做错了什么?因为在我看来,我正在使用serializers_class...

先感谢您!

标签: pythondjangodjango-rest-frameworkdjango-views

解决方案


试试这个

class MovieViewSet(viewsets.ModelViewSet):
    queryset = Movie.objects.all()

    def get_serializer_class(self):
        return MovieSerializer

    def list(self, request, *args, **kwargs):
        movies = Movie.objects.all()
        serializer = MovieSerializer(movies, many=True)
        return Response(serializer.data)

我相信这是一个缓存问题,让我们看看这是否有效。


推荐阅读