[Django]-Ordering Django queryset by a @property

44👍

✅

You can’t do that because that property is not in MySQL, but in your python code. If you really want to do this, you can on the client-side(though it will be very slow):

sorted(Thing.objects.all(), key=lambda t: t.name)

4👍

order_by happens on the sql level, so it can’t make use of properties, only field data.

have a look at the queryset api, you may be able to make use of e.g. extra to annotate your query and sort on that

4👍

Have a look at django-denorm. It lets you maintain calculated values in the database (which you can then use to sort efficiently) for the cost of a single method decorator.

3👍

You can only order by database fields. You can pull all records, turn them into a list, and sort them, although that may be inefficient and slow.

Or you can add a database field called name and fill it in via a post-save hook; then you can sort it using order_by.

Leave a comment