Sejak Django 1.8 order_by() menerima tidak hanya nama bidang tetapi juga ekspresi kueri .
Dalam jawaban lain Saya memberikan contoh bagaimana Anda dapat mengganti susunan default untuk sebuah kolom. Ekspresi kueri yang berguna di sini adalah Func() , yang dapat Anda subkelas atau gunakan secara langsung:
nimi_et = Func(
'nimi',
function='et_EE',
template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(nimi_et.asc())
Namun, perhatikan bahwa SQL yang dihasilkan akan lebih seperti:
SELECT nimi FROM test ORDER BY nimi COLLATE "et_EE" ASC;
Artinya, susunan ditimpa dalam ORDER BY klausa daripada di SELECT ayat. Namun, jika Anda perlu menggunakannya dalam WHERE klausa, Anda dapat menggunakan Func() di annotate() .