Шаблон Django - объединение цикла внутри цикла и сортировка по дате

У меня есть массив под названием Events.

В массиве Events у меня есть еще один массив под названием Recurrences, использующий библиотеку Django-Recurrences.

Я получаю контекст событий из моего представления, а также сегодняшнюю дату и дату окончания:

context['events'] = PartnerEvents.objects.filter(partner=context['partner'])
context['today'] = datetime.combine(timezone.now().date(), time(0, 0))
context['end'] = context['today'] + timedelta(days=21)
return context

Затем я зацикливаю его в своем шаблоне следующим образом.

{% for e in events %}
            {% for ts in e.recurrences.occurrences %}
               {% if ts >= today and ts <= end %}
                    <p>{{ts|date:'d F'}}</p>
               {% endif %}
            {% endfor %}
            {% endfor %}

Затем он отобразит все события и происшествия, которые произойдут сегодня и в следующие 21 день, например

05 March
07 March
08 March
09 March
10 March
11 March
12 March
14 March
15 March
16 March
17 March
18 March
19 March
21 March
22 March
23 March
24 March
25 March
05 March
12 March
19 March

Однако, поскольку некоторые "партнеры" могут иметь более 1 события в день, это приводит к тому, что другое событие зацикливается только после определенного события. Как вы заметили 05 March, 12 March, 19 March, это другое "событие", происходящее только в определенные дни.

В действительности, было бы неплохо, если бы даты были объединены и упорядочены вместе, например 5 March, 5 March, 7 March. Я не уверен, что такой подход должен быть реализован в логике представления или в логике шаблона.

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