Я посмотрел на перегруппировку, и она, казалось, не делала то, что я хотел. в частности, в документации сказано: [цитата] Обратите внимание, что {% regroup%} не упорядочивает свой ввод! Наш пример основан на том факте, что список людей был упорядочен по полу в первую очередь. [Endquote]

ли отсортировать набор связанных элементов в шаблоне DJango?

То есть: этот код (без тегов HTML для ясности):

{% for event in eventsCollection %}
   {{ event.location }}
   {% for attendee in event.attendee_set.all %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

дисплеипочти точно хочу я хочу. Единственное, что я хочу изменить, - это список участников, отсортированных по фамилии. Я пытался сказать что-то вроде этого:

{% for event in events %}
   {{ event.location }}
   {% for attendee in event.attendee_set.order_by__last_name %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

Увы, приведенный выше синтаксис не работает (он генерирует пустой список), и ни один другой вариант, о котором я задумывался (много сообщений об ошибках синтаксиса, но без радости).

Я мог бы, конечно, создать какой-то массив отсортированных списков участников, на мой взгляд, но это уродливое и хрупкое (и я упомянул уродливое) решение.

Само собой разумеется, но я скажу это в любом случае, я просмотрел онлайновые документы и искал Переполнение стека и архивы пользователя django, не находя ничего полезного (ах, если бы только набор запросов был словарным, сортировка словаря выполняла бы работа, но это не так, и это не так)

==============================================

Отредактировано, чтобы добавить дополнительные мысли после принятия ответа Tawmas.

Таммас решил проблему именно так, как я ее представил - хотя решение оказалось не таким, как я ожидал. В результате я выучил полезную технику, которую можно использовать и в других ситуациях.

В ответе Тома был предложен подход, о котором я уже упоминал в своем ОП, и который якобы отклонил как «уродливый».

«Уродливое» было интуитивной реакцией, и я хотел уточнить, что с ним не так. При этом я понял, что причина того, что это был уродливый подход, заключалась в том, что я был одержим идеей передачи набора запросов в шаблон для визуализации. Если я ослаблю это требование, то у меня будет неприглядный подход.

Я еще не пробовал этого, но предположим, что вместо прохождения набора запросов код представления повторялся в наборе запросов, создавая список событий, а затем украшал каждое событие набором запросов для соответствующих участников, которыеБЫЛ отсортировано (или отфильтровано, или как угодно) желаемым способом. Примерно так:

eventCollection = []   
events = Event.object.[filtered and sorted to taste]
for event in events:
   event.attendee_list = event.attendee_set.[filtered and sorted to taste]
   eventCollection.append(event)

Теперь шаблон становится:

{% for event in events %}
   {{ event.location }}
   {% for attendee in event.attendee_list %}
     {{ attendee.first_name }} {{ attendee.last_name }}
   {% endfor %}
 {% endfor %}

Недостатком является то, что представление должно «актуализировать» все события одновременно, что может быть проблемой, если существует большое количество событий. Конечно, можно добавить нумерацию страниц, но это значительно усложняет представление.

Положительным моментом является то, что код «подготовить данные для отображения» находится в представлении, к которому он принадлежит, что позволяет шаблону сосредоточиться на форматировании данных, предоставляемых представлением для отображения. Это правильно и правильно.

Поэтому я планирую использовать технику Таумаса для больших столов и вышеописанную технику для маленьких столов, с определением больших и маленьких, оставленных читателю (ухмылка).