diff --git a/movie_manager/serializers.py b/movie_manager/serializers.py index cb39648..07cc417 100644 --- a/movie_manager/serializers.py +++ b/movie_manager/serializers.py @@ -28,18 +28,9 @@ class MovieSerializer(serializers.ModelSerializer): def get_has_been_scheduled(self, obj): return Showing.objects.filter(movie_id=obj.id).exists() -class MovieListListSerializer(serializers.ModelSerializer): - movie_count = serializers.SerializerMethodField() - - class Meta: - model = MovieList - fields = ["id", "name", "owner", "public", "movie_count"] - - def get_movie_count(self, obj): - return obj.movies.count() - class MovieListSerializer(serializers.ModelSerializer): + movie_count = serializers.SerializerMethodField() movies = MovieSerializer(read_only=True, many=True) serializer_class = MovieSerializer @@ -51,8 +42,10 @@ class MovieListSerializer(serializers.ModelSerializer): class Meta: model = MovieList - fields = ["id", "name", "owner", "public", "movies"] + fields = ["id", "name", "owner", "public", "movies", "movie_count"] + def get_movie_count(self, obj): + return obj.movies.count() class UserSerializer(serializers.Serializer): diff --git a/movie_manager/views.py b/movie_manager/views.py index 973a488..0a3dbe9 100644 --- a/movie_manager/views.py +++ b/movie_manager/views.py @@ -16,7 +16,7 @@ from movie_manager.serializers import ( MovieListSerializer, MovieSerializer, ScheduleSerializer, - ShowingSerializer, MovieListListSerializer, + ShowingSerializer, ) @@ -55,25 +55,11 @@ class MovieViewset(viewsets.ModelViewSet): class MovieListViewset(viewsets.ModelViewSet): - queryset = MovieList.objects.all() + queryset = MovieList.objects.prefetch_related("movies").order_by("name") authentication_classes = [TokenAuthentication] permission_classes = [permissions.IsAuthenticated | ReadOnly] - def get_serializer_class(self): - if self.action == "list": - return MovieListListSerializer - else: - return MovieListSerializer - - def get_queryset(self): - if self.action == "list": - return MovieList.objects.filter(owner=self.request.user) - else: - return MovieList.objects.prefetch_related( - "movies", - "movies__showing_set" - ).order_by("name") - + serializer_class = MovieListSerializer def create(self, request, *args, **kwargs): movie_list = MovieList.objects.create(