Как получить значение из сквозной модели с помощью 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",
)