Как получить результат фильтра в порядке списка запросов в Django

У меня есть такие документы в моем mongodb

{'id':1, 'url': www.aaa.com},{'id':3, 'url': www.ccc.com},{'id':2, 'url': www.bbb.com}

Model.Objects.filter(id__in=[1,2,3])

Я хочу получить результат для вышеуказанного запроса Django как

[Model:aaa.com>,Model:bbb.com>,Model:ccc.com>]

Все, что я имею в виду, это то, как получить результат в порядке заданного списка в запросе фильтра. Т.е. id=1, id=2, id=3

Я не всегда получал заказанный результат. Это только образцы документов.


person itzMEonTV    schedule 11.03.2014    source источник
comment
использование order_by(id) не помогает?   -  person Gabriel Amram    schedule 11.03.2014
comment
@GabrielAmram нет, он не получил необходимого результата, когда идентификатор что-то вроде 1003nnf, 5000eeg. Здесь предположим, что идентификатор не имеет порядка. Тогда как я его получил?   -  person itzMEonTV    schedule 11.03.2014


Ответы (2)


По умолчанию Queryset не упорядочен, если вы не укажете order_by. См. https://docs.djangoproject.com/en/dev/ref/models/querysets/#queryset-api

попробуй Model.Objects.filter(id__in=[1,2,3]).order_by("id")

person abrunet    schedule 11.03.2014

Насколько я знаю, встроенный order_by позволяет упорядочивать только по столбцу в таблице в порядке возрастания или убывания. Если вы хотите настроить порядок, вам нужно написать собственную функцию сортировки.

person Terry    schedule 11.03.2014
comment
Он может сортироваться, как мы хотим, как список. Но он не может затем снова преобразовать в набор запросов. - person itzMEonTV; 11.03.2014