2012-10-09 23 views

Respuesta

15

puede que tenga que resolver eso en Python ..

sorted(MyModel.objects.all(),key=lambda o:len(o.name),reverse=True)

o mentí (Una rápida búsqueda en Google encontró lo siguiente)

MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') 
7

Por supuesto, puede ordenar los resultados usando Python's sorted, pero eso no es ideal. En su lugar, puede probar esto:

MyModel.objects.extra(select={'length':'Length(name)'}).order_by('length') 
+1

lol que Musta tiene esto desde el mismo hilo google he encontrado: P –

4

Tendrá que utilizar el argumento extra para pasar una función SQL:

obj = MyModel.objects.all().extra(order_by=['LENGTH(`name`)']) 

Tenga en cuenta que esto es db-específica: MySQL usa LENGTH, otros podrían use LEN.

9

El nuevo picor (a partir de Django 1.8 o algo así) es Length()

from django.db.models.functions import Length 
obj = MyModel.objects.all().order_by(Length(name).asc()) 
Cuestiones relacionadas