Vous pouvez utiliser le filtre de modèle dictsort https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-dictsort
Cela devrait fonctionner :
{% for event in eventsCollection %}
{{ event.location }}
{% for attendee in event.attendee_set.all|dictsort:"last_name" %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
Vous devez spécifier la commande dans le modèle de participant, comme ceci. Par exemple (en supposant que votre classe modèle s'appelle Attendee) :
class Attendee(models.Model):
class Meta:
ordering = ['last_name']
Consultez le manuel pour plus de références.
MODIFIER . Une autre solution consiste à ajouter une propriété à votre modèle d'événement, accessible depuis votre modèle :
class Event(models.Model):
# ...
@property
def sorted_attendee_set(self):
return self.attendee_set.order_by('last_name')
Vous pouvez en définir d'autres selon vos besoins...
Une solution consiste à créer un templatetag personnalisé :
@register.filter
def order_by(queryset, args):
args = [x.strip() for x in args.split(',')]
return queryset.order_by(*args)
utiliser comme ceci :
{% for image in instance.folder.files|order_by:"original_filename" %}
...
{% endfor %}