Упорядоченный список в Джанго - PullRequest
0 голосов
/ 30 мая 2019

Может кто-нибудь помочь, я хочу вернуть упорядоченный список на основе forloop в Django, используя поле в модели, которое содержит как целое число, так и строку в формате MM / 1234. Цикл должен возвращать значения с наименьшим числом (1234) в порядке возрастания в шаблоне html.

1 Ответ

0 голосов
/ 30 мая 2019

В идеале вы хотите изменить модель, чтобы иметь два поля, одно целое и одну строку, чтобы вы могли кодировать набор запросов с упорядочением на основе целого числа.Затем вы можете определить свойство модели, чтобы оно возвращало составное значение self.MM+"/"+str( self.nn), если вам часто нужно его использовать.Но если это чья-то схема базы данных, это может быть не вариант.

В этом случае вам придется преобразовать ваш набор запросов в список (который считывает все строки данных одновременно), а затем отсортировать список в Python, а не в базе данных.Вы можете исчерпать память или поставить свой сервер на колени, если список содержит миллионы объектов.count=qs.count() - это операция с БД, которая не будет.

qs = Foo.objects.filter( your_selection_criteria)
# you might want to count this before the next step, and chicken out if too many 
# also this simple key function will crash if there's ever no "/" in that_field
all_obj = sorted( list( qs), 
            key = lambda obj: obj.that_field.split('/')[1] ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...