updated db queries for performance improvement

This commit is contained in:
Edward Tirado Jr 2025-06-30 17:08:47 -05:00
parent 8602784c0d
commit 6651be3458
2 changed files with 10 additions and 3 deletions

View file

@ -26,19 +26,26 @@ class MovieSerializer(serializers.ModelSerializer):
] ]
def get_has_been_scheduled(self, obj): 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): class MovieListSerializer(serializers.ModelSerializer):
movie_count = serializers.SerializerMethodField() movie_count = serializers.SerializerMethodField()
movies = MovieSerializer(read_only=True, many=True) 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: class Meta:
model = MovieList model = MovieList
fields = ["id", "name", "owner", "public", "movies", "movie_count"] fields = ["id", "name", "owner", "public", "movies", "movie_count"]
def get_movie_count(self, obj): def get_movie_count(self, obj):
return len(obj.movies.all()) return obj.movies.count()
class UserSerializer(serializers.Serializer): class UserSerializer(serializers.Serializer):

View file

@ -55,7 +55,7 @@ class MovieViewset(viewsets.ModelViewSet):
class MovieListViewset(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] authentication_classes = [TokenAuthentication]
permission_classes = [permissions.IsAuthenticated | ReadOnly] permission_classes = [permissions.IsAuthenticated | ReadOnly]