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)