Sorting related items in a Django template
You can use template filter dictsort https://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-dictsort
This should work:
{% for event in eventsCollection %} {{ event.location }} {% for attendee in event.attendee_set.all|dictsort:"last_name" %} {{ attendee.first_name }} {{ attendee.last_name }} {% endfor %} {% endfor %}
You need to specify the ordering in the attendee model, like this. For example (assuming your model class is named Attendee):
class Attendee(models.Model): class Meta: ordering = ['last_name']
See the manual for further reference.
EDIT. Another solution is to add a property to your Event model, that you can access from your template:
class Event(models.Model):# ...@propertydef sorted_attendee_set(self): return self.attendee_set.order_by('last_name')
You could define more of these as you need them...
One solution is to make a custom templatag:
@register.filterdef order_by(queryset, args): args = [x.strip() for x in args.split(',')] return queryset.order_by(*args)
use like this:
{% for image in instance.folder.files|order_by:"original_filename" %} ...{% endfor %}