Bläddra i källkod

[music] Clean up track model details

Colin Powell 3 veckor sedan
förälder
incheckning
1f876333d7

+ 25 - 0
vrobbler/apps/music/migrations/0032_alter_track_albums_alter_track_scrobblableitem_ptr.py

@@ -0,0 +1,25 @@
+# Generated by Django 4.2.26 on 2025-12-03 19:37
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('scrobbles', '0074_alter_scrobble_item'),
+        ('music', '0031_remove_track_base_run_time_seconds_and_more'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='track',
+            name='albums',
+            field=models.ManyToManyField(blank=True, related_name='tracks', to='music.album'),
+        ),
+        migrations.AlterField(
+            model_name='track',
+            name='scrobblableitem_ptr',
+            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='as_track', serialize=False, to='scrobbles.scrobblableitem'),
+        ),
+    ]

+ 2 - 9
vrobbler/apps/music/models.py

@@ -602,16 +602,8 @@ class Track(ScrobblableItem):
     MEDIA_TYPE = MediaType.TRACK
     COMPLETION_PERCENT = getattr(settings, "MUSIC_COMPLETION_PERCENT", 100)
 
-    scrobblableitem_ptr = models.OneToOneField(
-        ScrobblableItem,
-        parent_link=True,
-        primary_key=True,
-        on_delete=models.CASCADE,
-        related_name="as_track",
-    )
-
     artist = models.ForeignKey(Artist, on_delete=models.DO_NOTHING)
-    albums = models.ManyToManyField(Album, related_name="tracks")
+    albums = models.ManyToManyField(Album, related_name="tracks", blank=True)
     album = models.ForeignKey(Album, on_delete=models.DO_NOTHING, **BNULL)
     musicbrainz_id = models.CharField(max_length=255, **BNULL)
 
@@ -628,6 +620,7 @@ class Track(ScrobblableItem):
 
     @property
     def primary_album(self):
+        """Return the first chronological album that we've seen this track on"""
         if self.album:
             return self.album
         return self.albums.order_by("year").first()