В идеале вы хотите изменить модель, чтобы иметь два поля, одно целое и одну строку, чтобы вы могли кодировать набор запросов с упорядочением на основе целого числа.Затем вы можете определить свойство модели, чтобы оно возвращало составное значение 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] )