У меня есть таблица Events
, упорядоченная по полю date
.Django - Группировка запросов по определенному полю в шаблоне
Я хочу, чтобы распечатать события в шаблоне, но с помощью отдельного DIV на каждую дату, например .:
<div class="content">
<h1>December 30th</h1>
<!-- div for Event 1 from December 30th -->
<!-- div for Event 2 from December 30th -->
</div>
<div class="content">
<h1>December 31st</h1>
<!-- div for Event 1 from December 31st -->
<!-- div for Event 2 from December 31st -->
<!-- div for Event 3 from December 31st -->
</div>
Как мне это сделать?
Мое настоящее решение состоит в том, чтобы поместить объекты Event в словарь с датой в качестве ключа. Это имеет проблемы с заказом и является неэффективным и неэффективным.
Вид:
events = Event.objects.select_related().all()
events_dict={}
for event in events:
date=event.date.strftime('%d %B %Y')
if date in events_dict:
events_dict[date].append(event)
else:
events_dict[date] = [event]
Шаблон:
{% for date, events in events_dict.items %}
<div class="content">
<h1>{{date}}</h1>
{% for event in events %}
{% include "partials/event.html" %}
{% endfor %}
</div>
{% endfor %}
Вы пробовали [перегруппировать] (https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#regroup) тег? – demalexx
@ race1 Нет, я этого не делал, и это то, что я искал. Спасибо. Если вы опубликуете ответ, я приму его – bcoughlan
спасибо, но есть еще один хороший ответ, примите его :) – demalexx