PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Classificação do conjunto de consultas:especificando o agrupamento de colunas para a consulta do django ORM


Desde o Django 1.8 order_by() aceita não apenas nomes de campo mas também expressões de consulta .

Em outra resposta Eu dei um exemplo de como você pode substituir o agrupamento padrão de uma coluna. A expressão de consulta útil aqui é Func() , que você pode subclassificar ou usar diretamente:
nimi_et = Func(
    'nimi',
    function='et_EE',
    template='(%(expressions)s) COLLATE "%(function)s"')
Test.objects.order_by(nimi_et.asc())

No entanto, observe que o SQL resultante será mais parecido com:
SELECT nimi FROM test ORDER BY nimi COLLATE "et_EE" ASC;

Ou seja, o agrupamento é substituído em ORDER BY cláusula em vez de em SELECT cláusula. No entanto, se você precisar usá-lo em um WHERE cláusula, você pode usar Func() em annotate() .