diff --git a/music_storage/music/migrations/0010_album_release_date.py b/music_storage/music/migrations/0010_album_release_date.py new file mode 100644 index 0000000..154ad45 --- /dev/null +++ b/music_storage/music/migrations/0010_album_release_date.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0 on 2026-01-04 18:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('music', '0009_album_preview_image'), + ] + + operations = [ + migrations.AddField( + model_name='album', + name='release_date', + field=models.PositiveSmallIntegerField(default=0), + ), + ] diff --git a/music_storage/music/models.py b/music_storage/music/models.py index 691e6a8..4160b8b 100644 --- a/music_storage/music/models.py +++ b/music_storage/music/models.py @@ -38,6 +38,7 @@ class Artist(BaseModel): class Album(BaseModel): artist = models.ForeignKey(Artist, on_delete=models.CASCADE, related_name="albums") name = models.CharField(max_length=200) + release_date = models.PositiveSmallIntegerField(default=0) cover_image = models.ImageField( upload_to=album_cover_upload_to, null=True, blank=True ) diff --git a/music_storage/music/views.py b/music_storage/music/views.py index 11946fc..45123ab 100644 --- a/music_storage/music/views.py +++ b/music_storage/music/views.py @@ -17,11 +17,13 @@ class TrackListView(ListView): def get_queryset(self): return ( - super().get_queryset() - .select_related("album", "album__artist") - .order_by("id") + super() + .get_queryset() + .select_related("album", "album__artist") + .order_by("id") ) + class ArtistListView(ListView): model = Artist template_name = "music/artist_list.html" @@ -35,7 +37,14 @@ class ArtistListView(ListView): class ArtistDetailView(django_views.View): def get(self, request: HttpRequest, pk: int, *args, **kwargs): artist = get_object_or_404(Artist, id=pk) - return render(request, "music/artist_detail.html", {"artist": artist}) + return render( + request, + "music/artist_detail.html", + { + "artist": artist, + "albums": artist.albums.all().order_by("-release_date"), + }, + ) class AlbumListView(ListView): diff --git a/music_storage/templates/music/artist_detail.html b/music_storage/templates/music/artist_detail.html index ee88d17..a119088 100644 --- a/music_storage/templates/music/artist_detail.html +++ b/music_storage/templates/music/artist_detail.html @@ -5,5 +5,5 @@ {% block content %}