dev/playlist #7

Merged
lovinervy merged 2 commits from dev/playlist into main 2026-01-06 17:08:27 +05:00
5 changed files with 25 additions and 3 deletions
Showing only changes of commit 2cc0614c1e - Show all commits

View File

@@ -11,9 +11,9 @@ class IndexView(View):
if recommendation_playlist := RecommendationPlaylist.objects.filter( if recommendation_playlist := RecommendationPlaylist.objects.filter(
is_actual=True is_actual=True
).first(): ).first():
tracks = recommendation_playlist.tracks.all().select_related( tracks = recommendation_playlist.playlist.tracks.all().select_related(
"album", "album__artist" "album", "album__artist"
)[:10] )
else: else:
tracks = [] tracks = []
return render(request, "index.html", {"tracks": tracks}) return render(request, "index.html", {"tracks": tracks})

View File

@@ -91,6 +91,8 @@ class PlaylistAdmin(admin.ModelAdmin):
search_fields = ("name",) search_fields = ("name",)
list_filter = ("created_at",) list_filter = ("created_at",)
filter_horizontal = ("tracks",)
@admin.register(RecommendationPlaylist) @admin.register(RecommendationPlaylist)
class RecommendationPlaylistAdmin(admin.ModelAdmin): class RecommendationPlaylistAdmin(admin.ModelAdmin):

View File

@@ -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'),
),
]

View File

@@ -101,7 +101,7 @@ class RecommendationPlaylist(BaseModel):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
description = models.TextField(blank=True) description = models.TextField(blank=True)
playlist = models.ForeignKey( playlist = models.OneToOneField(
Playlist, on_delete=models.CASCADE, related_name="recommendations" Playlist, on_delete=models.CASCADE, related_name="recommendations"
) )
is_actual = models.BooleanField(default=False) is_actual = models.BooleanField(default=False)

View File

@@ -6,4 +6,5 @@
<h1>Рекомендации:</h1> <h1>Рекомендации:</h1>
{% include "components/track_list.html" with tracks=tracks %} {% include "components/track_list.html" with tracks=tracks %}
</div> </div>
{% include "components/player.html" %}
{% endblock %} {% endblock %}