From f1d0a264bf165da40c21f1758e112f9e25d43c9a Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Tue, 13 Sep 2016 18:25:00 +0200 Subject: [PATCH] Reduced number of query in album / tracks / artists api views --- funkwhale_api/music/views.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/funkwhale_api/music/views.py b/funkwhale_api/music/views.py index 6622b1e..8e37c66 100644 --- a/funkwhale_api/music/views.py +++ b/funkwhale_api/music/views.py @@ -46,7 +46,12 @@ class ArtistViewSet(SearchMixin, viewsets.ReadOnlyModelViewSet): ordering_fields = ('creation_date',) class AlbumViewSet(SearchMixin, viewsets.ReadOnlyModelViewSet): - queryset = models.Album.objects.all().order_by('-creation_date').prefetch_related('tracks__tags') + queryset = ( + models.Album.objects.all() + .order_by('-creation_date') + .select_related() + .prefetch_related('tracks__tags', + 'tracks__files')) serializer_class = serializers.AlbumSerializerNested permission_classes = [ConditionalAuthentication] search_fields = ['title'] @@ -63,7 +68,13 @@ class TrackViewSet(TagViewSetMixin, SearchMixin, viewsets.ReadOnlyModelViewSet): """ A simple ViewSet for viewing and editing accounts. """ - queryset = models.Track.objects.all().select_related('album__artist', 'artist').prefetch_related('files') + queryset = (models.Track.objects.all() + .select_related() + .select_related('album__artist') + .prefetch_related( + 'tags', + 'files', + 'artist__albums__tracks__tags')) serializer_class = serializers.TrackSerializerNested permission_classes = [ConditionalAuthentication] search_fields = ['title', 'artist__name'] -- GitLab