Siden Django 1.8 order_by() accepterer ikke kun feltnavne men også forespørgselsudtryk .
I et andet svar Jeg gav et eksempel på, hvordan du kan tilsidesætte standardsorteringen for en kolonne. Det nyttige forespørgselsudtryk her er Func() , som du kan underklassificere eller bruge direkte:
nimi_et = Func(
'nimi',
function='et_EE',
template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(nimi_et.asc())
Bemærk dog, at den resulterende SQL vil være mere som:
SELECT nimi FROM test ORDER BY nimi COLLATE "et_EE" ASC;
Det vil sige, at sorteringen tilsidesættes i ORDER BY klausul i stedet for i SELECT klausul. Men hvis du skal bruge det i en WHERE klausul, kan du bruge Func() i annotate() .