diff --git a/music_storage/core/views.py b/music_storage/core/views.py index 01b4000..2693e62 100644 --- a/music_storage/core/views.py +++ b/music_storage/core/views.py @@ -11,9 +11,9 @@ class IndexView(View): if recommendation_playlist := RecommendationPlaylist.objects.filter( is_actual=True ).first(): - tracks = recommendation_playlist.tracks.all().select_related( + tracks = recommendation_playlist.playlist.tracks.all().select_related( "album", "album__artist" - )[:10] + ) else: tracks = [] return render(request, "index.html", {"tracks": tracks}) diff --git a/music_storage/music/admin.py b/music_storage/music/admin.py index c231990..683b901 100644 --- a/music_storage/music/admin.py +++ b/music_storage/music/admin.py @@ -91,6 +91,8 @@ class PlaylistAdmin(admin.ModelAdmin): search_fields = ("name",) list_filter = ("created_at",) + filter_horizontal = ("tracks",) + @admin.register(RecommendationPlaylist) class RecommendationPlaylistAdmin(admin.ModelAdmin): diff --git a/music_storage/music/migrations/0012_alter_recommendationplaylist_playlist.py b/music_storage/music/migrations/0012_alter_recommendationplaylist_playlist.py new file mode 100644 index 0000000..f4d7522 --- /dev/null +++ b/music_storage/music/migrations/0012_alter_recommendationplaylist_playlist.py @@ -0,0 +1,19 @@ +# Generated by Django 6.0 on 2026-01-06 12:04 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('music', '0011_playlist_recommendationplaylist'), + ] + + operations = [ + migrations.AlterField( + model_name='recommendationplaylist', + name='playlist', + field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='recommendations', to='music.playlist'), + ), + ] diff --git a/music_storage/music/models.py b/music_storage/music/models.py index fb8b666..673ef3d 100644 --- a/music_storage/music/models.py +++ b/music_storage/music/models.py @@ -101,7 +101,7 @@ class RecommendationPlaylist(BaseModel): name = models.CharField(max_length=200) description = models.TextField(blank=True) - playlist = models.ForeignKey( + playlist = models.OneToOneField( Playlist, on_delete=models.CASCADE, related_name="recommendations" ) is_actual = models.BooleanField(default=False) diff --git a/music_storage/templates/index.html b/music_storage/templates/index.html index 466f82a..765bfb7 100644 --- a/music_storage/templates/index.html +++ b/music_storage/templates/index.html @@ -6,4 +6,5 @@

Рекомендации:

{% include "components/track_list.html" with tracks=tracks %} +{% include "components/player.html" %} {% endblock %}