Django QuerySet Order By
Order By
To sort QuerySets, Django uses the order_by()
method:
Example
Order the the result alphabetically by firstname:
1 |
mydata = Members.objects.all().order_by('firstname').values() |
In SQL, the above statement would be written like this:
1 |
SELECT * FROM members ORDER BY firstname; |
Descending Order
By default, the result is sorted ascending (the lowest value first), to change the direction to descending (the highest value first), use the minus sign (NOT), -
in front of the field name:
Example
Order the the result firstname descending:
1 |
mydata = Members.objects.all().order_by('-firstname').values() |
In SQL, the above statement would be written like this:
1 |
SELECT * FROM members ORDER BY firstname DESC; |
Multiple Order Bys
To order by more than one field, separate the fieldnames with a comma in the order_by()
method:
Example
Order the the result first by lastname ascending, then descending on id:
1 |
mydata = Members.objects.all().order_by('lastname', '-id').values() |
In SQL, the above statement would be written like this:
1 |
SELECT * FROM members ORDER BY lastname ASC, id DESC; |