Как сделать индексацию в словаре python с помощью html-шаблона
def send_template(request):
my_folders = Folders.objects.filter(parent=None).order_by('name')
new_headers = {}
for foldr in my_folders:
en_count = FolderEntries.objects.filter(folder = foldr.id ).count()
new_headers[foldr.id] = en_count
return render(request, 'folders.html', 'new_headers':new_headers)
new_headers содержит данные в таком виде:- {190: 1, 196: 0, 199: 0, 121: 0, 185: 1, 194: 1, 108: 3, 168: 4, 197: 0, 195: 0, 198: 0, 171: 1}
Теперь я хочу получить новые_заголовки в html шаблоне с помощью индексации Например:- new_headers[190]
Как это сделать... Кто-нибудь помогите
Я отправляю эти данные в мой html шаблон:-. {190: 1, 196: 0, 199: 0, 121: 0, 185: 1, 194: 1, 108: 3, 168: 4, 197: 0, 195: 0, 198: 0, 171: 1}
Теперь я хочу сделать индексацию в этих данных.
Индексирование намеренно не поддерживается в языке шаблонов Django, потому что это написание бизнес-логики в шаблоне. Для фиксированного ключа можно использовать new_headers.190
, можно также зарегистрировать пользовательский поиск, но обычно это означает, что логика не эффективна.
Вы можете .annotate(…)
[Django-doc] с:
from django.db.models import Count
def send_template(request):
my_folders = (
Folders.objects.filter(parent=None)
.order_by('name')
.annotate(num_entries=Count('folderentries'))
)
return render(request, 'folders.html', {'new_headers': new_headers})
Объекты Folders
, возникающие в результате этого QuerySet
, будут иметь дополнительный атрибут .num_entries
.