Django заказ по индивидуальному списку - PullRequest
1 голос
/ 25 марта 2020

У меня проблема с упорядочением набора запросов.

Например, он будет отсортирован по дес c.

Если они имеют одинаковый приоритет, поэтому не могут определить указанный c порядок , они будут использовать второй приоритет.

# list = [[id, priority], ...]

list_1 = [[1,2],[2,3],[3,3],[4,4]] # first priority

list_2 = [[1,4],[2,5],[3,7],[4,2]] # second priority


using first priority : 4 -> (2,3) -> 1

using second priority : 4 -> 3 -> 2 -> 1

result = 4 -> 3 -> 2 -> 1

Поэтому я хочу получить набор запросов, упорядоченный как последовательность идентификаторов результата.

1 Ответ

0 голосов
/ 30 марта 2020

Я не знаю, что это лучший способ решить эту проблему.

Но это сработало для меня, поэтому надеюсь, что этот код полезен для вас.

    _count = [2, 4, 7, 3, 5, 8]
   ordering = []
   ordering.append(Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(_count)]))

pk - это Имя поля В моем коде pk - это Первичный ключ в модели. Если вы хотите упорядочить по имени, вы можете изменить pk на name.

А потом позиция рк.

Model.objects.all().order_by(*ordering)

После настройки списка упорядочивания вы можете применить это условие в запросе, как верхний код.

Я не уверен, но порядок условий также важен.

Потому что это Эффект условия, в свою очередь, в значении списка.

+) Я не очень хорош в Engli sh, но я делаю все возможное, чтобы объяснить свой код. Так что, если я ошибся в своем ответе, пожалуйста, прокомментируйте меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...