Fix #865: Performance optimization on /artists, /albums and /tracks endpoints
This commit is contained in:
parent
8ed6f830b5
commit
81349e2b57
5 changed files with 88 additions and 81 deletions
|
|
@ -96,8 +96,14 @@ def refetch_obj(obj, queryset):
|
|||
class ArtistViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelViewSet):
|
||||
queryset = (
|
||||
models.Artist.objects.all()
|
||||
.select_related("attributed_to")
|
||||
.annotate(_tracks_count=Count("tracks"))
|
||||
.prefetch_related("attributed_to")
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"tracks",
|
||||
queryset=models.Track.objects.all(),
|
||||
to_attr="_prefetched_tracks",
|
||||
)
|
||||
)
|
||||
)
|
||||
serializer_class = serializers.ArtistWithAlbumsSerializer
|
||||
permission_classes = [oauth_permissions.ScopePermission]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue