Добавил release_date в Album
This commit is contained in:
18
music_storage/music/migrations/0010_album_release_date.py
Normal file
18
music_storage/music/migrations/0010_album_release_date.py
Normal file
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -38,6 +38,7 @@ class Artist(BaseModel):
|
|||||||
class Album(BaseModel):
|
class Album(BaseModel):
|
||||||
artist = models.ForeignKey(Artist, on_delete=models.CASCADE, related_name="albums")
|
artist = models.ForeignKey(Artist, on_delete=models.CASCADE, related_name="albums")
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
|
release_date = models.PositiveSmallIntegerField(default=0)
|
||||||
cover_image = models.ImageField(
|
cover_image = models.ImageField(
|
||||||
upload_to=album_cover_upload_to, null=True, blank=True
|
upload_to=album_cover_upload_to, null=True, blank=True
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -17,11 +17,13 @@ class TrackListView(ListView):
|
|||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
return (
|
return (
|
||||||
super().get_queryset()
|
super()
|
||||||
|
.get_queryset()
|
||||||
.select_related("album", "album__artist")
|
.select_related("album", "album__artist")
|
||||||
.order_by("id")
|
.order_by("id")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ArtistListView(ListView):
|
class ArtistListView(ListView):
|
||||||
model = Artist
|
model = Artist
|
||||||
template_name = "music/artist_list.html"
|
template_name = "music/artist_list.html"
|
||||||
@@ -35,7 +37,14 @@ class ArtistListView(ListView):
|
|||||||
class ArtistDetailView(django_views.View):
|
class ArtistDetailView(django_views.View):
|
||||||
def get(self, request: HttpRequest, pk: int, *args, **kwargs):
|
def get(self, request: HttpRequest, pk: int, *args, **kwargs):
|
||||||
artist = get_object_or_404(Artist, id=pk)
|
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):
|
class AlbumListView(ListView):
|
||||||
|
|||||||
@@ -5,5 +5,5 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{{ artist.name }}</h1>
|
<h1>{{ artist.name }}</h1>
|
||||||
<h2>Albums</h2>
|
<h2>Albums</h2>
|
||||||
{% include 'components/album_list.html' with albums=artist.albums.all %}
|
{% include 'components/album_list.html' %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user