La ordenación de Django no distingue entre mayúsculas y minúsculas utilizando el método de modelo con PostgreSQL

Realmente soy nuevo en django, python y postgres … Parece que no puedo encontrar la respuesta sobre cómo ordenar_por mayúsculas y minúsculas al usar Model como método de consulta, solo si usa consultas SQL directas.

Model @classmethod def get_channel_list(cls, account): return cls.objects.filter(accountid=account).order_by('-name').values_list('name', 'channelid') 

El conjunto de datos y el orden se están ordenando actualmente en

 test b test a test channel a test channel a test 2 ab test Test Channel Test 3 Test 3 Test 2 Channel 

Cualquier ayuda sería muy apreciada.

Usando QuerySet.extra(select=...) :

 @classmethod def get_channel_list(cls, account): ret = cls.objects.extra(select={'name_lower': 'lower(name)'}) ret = ret.order_by('-name_lower') ret = ret.filter(accountid=account).values_list('name', 'channelid') return channels 

Con django 1.8, hay una solución integrada:

 from django.db.models.functions import Lower ... ret = ret.order_by(Lower('name_lower')) ret = ret.order_by(Lower('name_lower').asc()) ret = ret.order_by(Lower('name_lower').desc())