Как вывести в шаблон django данные из пользовательских полей промежуточной таблицы ManyToMany
Помогите разобраться с запросами django. необходимо передать дополнительные поля из промежуточной модели в шаблон.
никак не могу понять как эти поля выводить так, чтобы они были вместе с данными одной из моделей, которая связана с промежуточной таблицей через ForeignKey. Модели выглядят вот так:
class Desk(models.Model):
name = models.CharField(max_length=100)
deskription = models.TextField(max_length=1000)
class Columns(models.Model):
class Meta:
ordering = ['order_num']
name = models.CharField(max_length=50)
desk = models.ForeignKey(Desk, on_delete=models.CASCADE, related_name='desk')
order_num = models.IntegerField()
archived = models.BooleanField(default=False)
class Card(models.Model):
class Meta:
ordering = ["-order_num"]
name = models.CharField(max_length=50, null=True, blank=True)
description = models.TextField(max_length=1000, null=True, blank=True)
column = models.ForeignKey(Columns, on_delete=models.CASCADE, related_name='cards')
order_num = models.IntegerField()
archived = models.BooleanField(default=False)
status = models.CharField(max_length=20, default='no-status')
class Sticker(models.Model):
name = models.CharField(max_length=50)
color = models.CharField(max_length=50)
icon = models.CharField(max_length=50)
card = models.ManyToManyField(Card, related_name='stickers', through='StateStickers')
class StateStickers(models.Model):
sticker = models.ForeignKey(Sticker, on_delete=models.CASCADE)
card = models.ForeignKey(Card, on_delete=models.CASCADE)
state = models.CharField(max_length=50, null=True, blank=True)
View функция рендеринга страницы
class ColumnsViews(View):
def get(self, request: HttpRequest, name):
prefetch_sticker = Prefetch('stickers', queryset=Sticker.objects.all())
prefetch_cards = Prefetch('cards',
queryset=Card.objects.filter(archived=False).prefetch_related(prefetch_sticker))
columns_qset = Columns.objects.filter(desk__name=name,
archived=False).prefetch_related(prefetch_cards)
context = {
"columns": columns_qset,
'desk_name': name,
'param_status': param_status,
}
return render(request, "deskapp/columns-list.html", context=context)
Что необходимо: В шаблоне я через for перебираю все Columns, затем в каждой Columns перебираю Cards, и затем в каждой Cards перебираю Stickers. и мне нужно опрашивать есть ли у стикера состояние state. Как запросить из промежуточной модели StateStickers поле state, которое будет доступно вместе с полями модели Sticker, чтобы в шаблоне можно было обратиться через sticker.state