Ordenar elementos relacionados en una plantilla de Django

Es posible ordenar un conjunto de elementos relacionados en una plantilla de DJango?

Esto es: este código (con las etiquetas HTML omitidas para mayor claridad):

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

displayscas exactamente quiero que quiero. Lo único que quiero cambiar es la lista de asistentes que se ordenarán por apellido. He intentado decir algo como esto:

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

Alas, la sintaxis anterior no funciona (produce una lista vacía) y tampoco ninguna otra variación en la que haya pensado (muchos errores de sintaxis informados, pero no es un placer).

Podría, por supuesto, producir algún tipo de matriz de listas de asistentes clasificadas en mi opinión, pero esa es una solución fea y frágil (y mencioné fea).

No hace falta decirlo, pero lo diré de todos modos, he leído detenidamente los documentos en línea y busqué Stack Overflow y los archivos de django-user sin encontrar nada útil (ah, si solo un conjunto de consultas fuera un diccionario de palabras sería útil el trabajo, pero no lo es y no lo hace)

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

ditado para agregar pensamientos adicionales después de aceptar la respuesta de Tawmas.

Tawmas abordó el problema exactamente como lo presenté, aunque la solución no fue lo que esperaba. Como resultado, aprendí una técnica útil que también se puede utilizar en otras situaciones.

La respuesta de Tom propuso un enfoque que ya había mencionado en mi OP y rechacé tentativamente como "feo".

El "feo" fue una reacción instintiva, y quería aclarar qué le pasaba. Al hacerlo, me di cuenta de que la razón por la que era un enfoque feo era porque estaba colgado de la idea de pasar un conjunto de consultas a la plantilla que se representaría. Si relajo ese requisito, hay un enfoque desagradable que debería funcionar.

No lo he intentado todavía, pero supongamos que, en lugar de pasar el conjunto de consultas, el código de vista itera a través del conjunto de consultas que produce una lista de Eventos, luego decora cada Evento con un conjunto de consultas para los asistentes correspondientes queFU ordenado (o filtrado, o lo que sea) de la manera deseada. Algo así:

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)

Ahora la plantilla se convierte en:

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

La desventaja es que la vista tiene que "actualizar" todos los eventos a la vez, lo que podría ser un problema si hubiera un gran número de eventos. Por supuesto, uno podría agregar paginación, pero eso complica la vista considerablemente.

La ventaja es que el código "preparar los datos para mostrar" se encuentra en la vista a la que pertenece, lo que permite que la plantilla se centre en formatear los datos proporcionados por la vista para su visualización. Esto es correcto y apropiado.

Así que mi plan es usar la técnica de Tawmas para tablas grandes y la técnica anterior para tablas pequeñas, con la definición de grande y pequeña para el lector (sonrisa)

Respuestas a la pregunta(3)

Su respuesta a la pregunta