Django: упорядочить несколько полей

Я получаю поля order_by в виде списка. Я хочу order_by несколькими полями с django orm. Список выглядит следующим образом:

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

Я пишу запрос:

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

Все, что я ожидаю в списке, динамично. У меня нет предустановленного набора данных. Может ли кто-нибудь сказать мне, как написать ORJ django с этим?

Ответы

Ответ 1

Попробуйте что-то вроде этого

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

Вам не нужно .all() для этого

Вы также можете определить порядок в своем классе модели

что-то вроде

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

Ответ 2

Попробуй это:

listOfInstance = modelclassinstance.objects.all()

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

Ответ 3

Передать список заказов в параметрах запроса

например: ваш домен /? order = location & order = check-out

orderbyList = ['check-in']  #default order

if request.GET.getlist('order'):
  orderbyList = request.GET.getlist('order')

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