Как сделать индексацию в словаре 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.

Вернуться на верх