diff --git a/program/migrations/0120_playlistentry.py b/program/migrations/0120_playlistentry.py
new file mode 100644
index 0000000000000000000000000000000000000000..fd1713a272021c464e8131acb525df920be9105c
--- /dev/null
+++ b/program/migrations/0120_playlistentry.py
@@ -0,0 +1,37 @@
+# Generated by Django 4.2.16 on 2024-10-29 20:56
+
+import django.db.models.deletion
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("program", "0119_playlist"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="PlaylistEntry",
+            fields=[
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True, primary_key=True, serialize=False, verbose_name="ID"
+                    ),
+                ),
+                ("duration", models.FloatField(null=True)),
+                ("file_id", models.IntegerField(null=True)),
+                ("line_num", models.IntegerField()),
+                ("uri", models.CharField(blank=True, max_length=1024)),
+                (
+                    "playlist",
+                    models.ForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="entries",
+                        to="program.playlist",
+                    ),
+                ),
+            ],
+        ),
+    ]
diff --git a/program/models.py b/program/models.py
index 37520c4209d1297aaa842501e786f20925884367..982796ea35bc061e19ad6edae56490eeccbf88c2 100644
--- a/program/models.py
+++ b/program/models.py
@@ -586,6 +586,17 @@ class Playlist(models.Model):
         return f"{self.show.name} - {self.description}" if self.description else self.show.name
 
 
+class PlaylistEntry(models.Model):
+    duration = models.FloatField(null=True)
+    file_id = models.IntegerField(null=True)
+    line_num = models.IntegerField(null=False)
+    playlist = models.ForeignKey(Playlist, on_delete=models.CASCADE, related_name="entries")
+    uri = models.CharField(blank=True, max_length=1024)
+
+    def __str__(self):
+        return f"{self.uri} - {self.duration:.2f}" if self.duration else self.uri
+
+
 class ImageAspectRadioField(models.CharField):
     validators = [
         RegexValidator(