sql >> Database >  >> RDS >> PostgreSQL

Queryset sorteren:kolomsortering specificeren voor django ORM-query

Sinds Django 1.8 order_by() accepteert niet alleen veldnamen maar ook query-expressies .

In een ander antwoord Ik heb een voorbeeld gegeven van hoe u de standaardsortering voor een kolom kunt overschrijven. De bruikbare query-expressie hier is Func() , die u kunt onderklassen of direct kunt gebruiken:

nimi_et = Func(
    'nimi',
    function='et_EE',
    template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(nimi_et.asc())

Houd er echter rekening mee dat de resulterende SQL meer zal zijn als:

SELECT nimi FROM test ORDER BY nimi COLLATE "et_EE" ASC;

Dat wil zeggen, de sortering wordt overschreven in ORDER BY clausule in plaats van in SELECT clausule. Als u het echter moet gebruiken in een WHERE clausule, kunt u Func() . gebruiken in annotate() .



  1. Waar wordt een rijconstructor voor gebruikt?

  2. Constanten in Oracle SQL-query

  3. Hoe herhaalbare json-knooppuntwaarden afzonderlijk van XML te extraheren met behulp van ORACLE SQL?

  4. Een resultatenset converteren van SQL-array naar array van tekenreeksen