web-dev-qa-db-fra.com

Django: Order_by plusieurs champs

Je reçois des champs order_by sous la forme d'une liste. Je veux order_by par plusieurs champs avec Django orm. La liste est comme ci-dessous:

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

J'écris une requête est comme:

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

Tout ce que j'attends dans une liste est dynamique. Je n'ai pas de jeu de données prédéfini. Est-ce que certains pourraient me dire comment écrire un ORM Django avec cela?

20
danny

Essayez quelque chose comme ça

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

Vous n'avez pas besoin de .all() pour cela

Vous pouvez également définir l'ordre dans votre classe de modèle

quelque chose comme

class Meta:
       ordering = ['check-in', 'check-out', 'location']
48
burning

Essaye ça:

listOfInstance = modelclassinstance.objects.all()

for askedOrder in orderbyList:
    listOfInstance = listOfInstance.order_by(askedOrder)
2
MicroCheapFx