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()
.