Sorting related items in a Django template Sorting related items in a Django template python python

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 %}