Performance optimization on playlisttrack serialization

This commit is contained in:
Eliot Berriot 2018-03-20 22:44:28 +01:00
parent dd40a4c4d1
commit 16f631af1a
No known key found for this signature in database
GPG key ID: DD6965E2476E5C27
2 changed files with 16 additions and 2 deletions

View file

@ -94,6 +94,15 @@ class Playlist(models.Model):
]
return PlaylistTrack.objects.bulk_create(plts)
class PlaylistTrackQuerySet(models.QuerySet):
def for_nested_serialization(self):
return (self.select_related()
.select_related('track__album__artist')
.prefetch_related(
'track__tags',
'track__files',
'track__artist__albums__tracks__tags'))
class PlaylistTrack(models.Model):
track = models.ForeignKey(
@ -105,6 +114,8 @@ class PlaylistTrack(models.Model):
Playlist, related_name='playlist_tracks', on_delete=models.CASCADE)
creation_date = models.DateTimeField(default=timezone.now)
objects = PlaylistTrackQuerySet.as_manager()
class Meta:
ordering = ('-playlist', 'index')
unique_together = ('playlist', 'index')