Как получить значение из сквозной модели с помощью django-tables2?

У меня есть модели ниже, которая позволяет пользователям создавать плейлист с множеством треков, связанных с плейлистом. Я хотел бы создать таблицу с помощью django-tables2, которая показывает 3 колонки: приоритет трека, исполнителя и название в плейлисте. Как я могу написать функцию render_priority для получения значения приоритета из модели PlaylistTrack для связанного трека для плейлиста?

models.py

class Artist(models.Model):
    name = models.CharField(max_length=100)
    

class Track(models.Model):
    artist = models.ForeignKey(
        Artist,
        blank=True,
        null=True,
        on_delete=models.SET_NULL,
        verbose_name="Artist",
        related_name="tracks",
    )
    title = models.CharField(max_length=100, verbose_name="Title")


class Playlist(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=False
    )
    name = models.CharField(max_length=50)
    tracks = models.ManyToManyField(Track, through="PlaylistTrack")
    description = models.TextField(blank=True, max_length=200)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
    slug = AutoSlugField(
        populate_from="name", unique=True, editable=True, slugify=custom_slugify
    )


class PlaylistTrack(models.Model):
    track = models.ForeignKey(Track, on_delete=models.CASCADE, null=True)
    playlist = models.ForeignKey(Playlist, on_delete=models.CASCADE, null=True)
    priority = models.PositiveSmallIntegerField(default=1)

    class Meta:
        ordering = ["priority"]

tables.py

class PlaylistTable(tables.Table):
    def __init__(self, *args, **kwargs):
        super(PlaylistTable, self).__init__(*args, **kwargs)
    
    def render_priority(self):
        pass # get priority value from PlaylistTrack model for track in playlist

    priority = tables.Column(
        verbose_name="#"
    )

    class Meta:
        model = Track
        fields = (
            "priority",
            "artist",
            "title",
        )
Вернуться на верх