2016-04-12 25 views
8

Ricevo i campi order_by sotto forma di elenco. Voglio ordinare da più campi con django orm. List è come qui di seguito:Django: Ordina da più campi

orderbyList = ['check-in','check-out','location'] 

Sto scrivendo una query è come:

modelclassinstance.objects.all().order_by(*orderbyList) 

Tutto mi aspetto in un elenco è dinamico. Non ho un insieme di dati predeterminato. Qualcuno potrebbe dirmi come scrivere un ORG django con questo?

risposta

22

provare qualcosa di simile

modelclassinstance.objects.order_by('check-in', 'check-out', 'location') 

Non è necessario .all() per questo

È inoltre possibile definire l'ordinazione nella classe del modello

qualcosa come

class Meta: 
     ordering = ['check-in', 'check-out', 'location'] 
+1

Grazie, ho ottenuto .. ho ricevuto da altri link. modelclassinstance.objects.order_by (* orderbyList) – danny

2

Try questo:

listOfInstance = modelclassinstance.objects.all() 

for askedOrder in orderbyList: 
    listOfInstance = listOfInstance.order_by(askedOrder) 
+0

modelclassinstance.objects.order_by (* orderbyList) è il modo migliore per ordinare –