diff --git a/movie_manager/serializers.py b/movie_manager/serializers.py index dc3cff1..07cc417 100644 --- a/movie_manager/serializers.py +++ b/movie_manager/serializers.py @@ -26,19 +26,26 @@ class MovieSerializer(serializers.ModelSerializer): ] def get_has_been_scheduled(self, obj): - return len(Showing.objects.filter(movie_id=obj.id).all()) > 0 + return Showing.objects.filter(movie_id=obj.id).exists() class MovieListSerializer(serializers.ModelSerializer): movie_count = serializers.SerializerMethodField() movies = MovieSerializer(read_only=True, many=True) + serializer_class = MovieSerializer + + def get_queryset(self): + return MovieList.objects.prefetch_related( + "movies", + "movies__showing_set" + ) class Meta: model = MovieList fields = ["id", "name", "owner", "public", "movies", "movie_count"] def get_movie_count(self, obj): - return len(obj.movies.all()) + return obj.movies.count() class UserSerializer(serializers.Serializer): diff --git a/movie_manager/views.py b/movie_manager/views.py index 7c5c1e9..0a3dbe9 100644 --- a/movie_manager/views.py +++ b/movie_manager/views.py @@ -55,7 +55,7 @@ class MovieViewset(viewsets.ModelViewSet): class MovieListViewset(viewsets.ModelViewSet): - queryset = MovieList.objects.all().order_by("name") + queryset = MovieList.objects.prefetch_related("movies").order_by("name") authentication_classes = [TokenAuthentication] permission_classes = [permissions.IsAuthenticated | ReadOnly]