В моем проекте django есть следующая модель (объекты в основном представляют собой список словарей):
def bill_sum(request):
titles = Summary.objects.values('title')
summary = Summary.objects.values('summary')
summary_text = Summary.objects.values('summary_text')
action_date = Summary.objects.values('action_date')
action_desc = Summary.objects.values('action_desc')
context = {'title':titles,
'summary':summary,
'summary_text':summary_text,
'action_date': action_date,
'action_desc':action_desc,
}
return render(request,'billsummary.html',context)
В моем шаблоне я могу сгенерировать список заголовков с помощью следующего html-кода:
<!doctype html>
<html>
<body>
{% for t in title %}
<h1>{{t.title}}</h1>
{% endfor %}
</body>
</html>
Однако, когда я пытаюсь добавить дополнительную информацию (например, цикл для всех итоговых объектов, ничего не отображается, кроме заголовков. Что мне не хватает? Как мне отобразить список словарей (например, файл данных Json) из моих представлений в шаблон?
Я хочу сделать что-то вроде следующего в шаблоне:
{% for c in context %}
<h1>c.title</h1>>
<h2>c.summary</h2>
<p>c.action_date</p>
{% endfor %}






Вы могли:
summaries = Summary.objects.values('title', 'summary', 'summary_text', 'action_date', 'action_desc')
return render(request,'billsummary.html',context = {'summaries': summaries})
Затем в шаблоне:
{% for t in summaries %}
<h1>{{t.title}}</h1>
<p>{{t.summary}}</p>
{% endfor %}
Он попадет в базу данных только один раз и идеально подойдет для вашего случая.
Но здесь вообще нет необходимости использовать значения. Просто возьмите объекты и передайте их в шаблон.
Values () гарантирует, что запрос выберет только эти поля, а не все поля в таблице, поэтому он будет быстрее
Сработало отлично. Теперь он отображает каждый отдельный словарь в представлении.