Доброй всем ночи.
Суть вопроса такова:
передаю в шаблон объект items. У элементов есть поля id,title,link
Также передаю словарь counts с вот таким содержанием {8: 136, 1: 6, 18: 2, 19: 1, 17: 1}
Counts словарь счётчиков элементов по категориям
Items - категории
Мне нужно вывести в шаблоне Категорию и количество элементов в ней
Вопрос в том, как мне запросить элемент counts от item.id ??
Пробовал: counts.item.id, counts[item.id], {{counts.{{item.id}}}} - на всё результат один - сервре возвращает 502 ошибку
Когда вывожу просто {{counts}} нормально выводится
также выводится, если делаю {{counts.8}}
{% if items %}
{% for item in items %}
<p><a href="/video/{{ item.link }}">{{ item.title }}</a> — {{ counts }}</p>
{% endfor %}
{% endif %}
Код models
from django.db import models
from persons.models import PersonsItem
from django.utils import timezone
import datetime
class VideoTags(models.Model):
tag = models.CharField(max_length = 100,verbose_name = 'Тэг')
def __str__(self):
return self.tag
class Meta():
verbose_name = 'Тэг'
verbose_name_plural = 'Тэги'
db_table = 'video_tags'
class VideoCategories(models.Model):
title = models.CharField(max_length=50, verbose_name = 'Название')
link = models.CharField(max_length=50, verbose_name = 'Ссылка')
def __str__(self):
return self.title
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
db_table = 'video_categories'
class VideoItems(models.Model):
title = models.CharField(max_length=50, verbose_name='Название')
link = models.CharField(max_length=50, verbose_name='Ссылка')
youtube_link = models.CharField(max_length=50, verbose_name='Ссылка Youtube')
category = models.ForeignKey(VideoCategories, verbose_name= 'Категория')
publ = models.BooleanField(verbose_name = 'Публикация', default=True)
text = models.TextField(verbose_name = 'Описание',default='')
publish_date = models.DateTimeField(verbose_name='Дата публикации', auto_now_add = True)
tags = models.ManyToManyField(VideoTags, verbose_name = 'Тэги')
uch = models.CharField(max_length=50)
old_tags = models.CharField(max_length=50,default='')
operator = models.ForeignKey(PersonsItem,related_name='oper',verbose_name='Оператор',on_delete=models.CASCADE)
director = models.ForeignKey(PersonsItem,related_name='dir',verbose_name='Ружиссёр',on_delete=models.CASCADE)
dateu = models.IntegerField(default=0)
def __str__(self):
return self.title
class Meta:
verbose_name = 'Видео'
verbose_name_plural = 'Видео'
db_table = 'video_items'
template_tags
from django import template
from django.http import HttpRequest
from django.template.loader import get_template
from persons.models import PersonsItem
from video.models import VideoCategories, VideoItems
videos = VideoItems.objects.filter(publ = True).order_by('-publish_date')
register = template.Library()
templates_dir = 'tags/'
def video_categories():
counts = {}
items = VideoCategories.objects.order_by('title')
if videos:
for video in videos:
if not video.category_id in counts:
counts[video.category_id] = 0
counts[video.category_id] += 1
return {
'items': items,
'counts': counts,
}
register.inclusion_tag(templates_dir+'video_categories.html')(video_categories)