Queryset methods on artist/albums

This commit is contained in:
Eliot Berriot 2018-05-08 21:21:52 +02:00
parent bbd273404a
commit 40cde0cd92
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
1 changed files with 12 additions and 0 deletions

View File

@ -76,6 +76,11 @@ class APIModelMixin(models.Model):
self.musicbrainz_model, self.mbid) self.musicbrainz_model, self.mbid)
class ArtistQuerySet(models.QuerySet):
def with_albums_count(self):
return self.annotate(_albums_count=models.Count('albums'))
class Artist(APIModelMixin): class Artist(APIModelMixin):
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
@ -89,6 +94,7 @@ class Artist(APIModelMixin):
} }
} }
api = musicbrainz.api.artists api = musicbrainz.api.artists
objects = ArtistQuerySet.as_manager()
def __str__(self): def __str__(self):
return self.name return self.name
@ -129,6 +135,11 @@ def import_tracks(instance, cleaned_data, raw_data):
track = importers.load(Track, track_cleaned_data, track_data, Track.import_hooks) track = importers.load(Track, track_cleaned_data, track_data, Track.import_hooks)
class AlbumQuerySet(models.QuerySet):
def with_tracks_count(self):
return self.annotate(_tracks_count=models.Count('tracks'))
class Album(APIModelMixin): class Album(APIModelMixin):
title = models.CharField(max_length=255) title = models.CharField(max_length=255)
artist = models.ForeignKey( artist = models.ForeignKey(
@ -173,6 +184,7 @@ class Album(APIModelMixin):
'converter': import_artist, 'converter': import_artist,
} }
} }
objects = AlbumQuerySet.as_manager()
def get_image(self): def get_image(self):
image_data = musicbrainz.api.images.get_front(str(self.mbid)) image_data = musicbrainz.api.images.get_front(str(self.mbid))