2012-10-09 10 views

risposta

15

potrebbe essere necessario ordinare che in python ..

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

o ho mentito (A rapida ricerca google trovato la seguente)

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

Ovviamente si può ordinare i risultati utilizzando Python's sorted, ma non è l'ideale. Invece, si potrebbe provare questo:

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

lol si Musta ottenuto questo dallo stesso filo google ho trovato: P –

4

Avrete bisogno di utilizzare l'argomento extra di passare una funzione SQL:

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

Si noti che questo è specifico-db: MySQL utilizza LENGTH, altri potrebbero utilizzare LEN.

9

Il nuovo piccante (come di Django 1.8 o giù di lì) è Length()

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