updated db queries for performance improvement #9
2 changed files with 10 additions and 3 deletions
|
@ -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):
|
||||||
|
|
|
@ -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]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue