Восходящий / нисходящий порядок Django QuerySet, когда один атрибут является методом модели - PullRequest
1 голос
/ 30 июля 2010

У меня есть QuerySet команд, упорядоченных по названию школы.Одним из атрибутов является метод модели, который отслеживает процент выигрыша команды.Я хочу упорядочить команды с самым высоким процентом побед до самого низкого.Если у команд одинаковый процент выигрышей, я хочу, чтобы они упорядочивались в алфавитном порядке по школам.Как получить что-то вроде этого:

team  pct
x    0.75
a    0.50
b    0.50
c    0.50
y    0.25

Поскольку процент выигрыша - это метод модели, я использую Python для сортировки QuerySet, который уже находится в алфавитном порядке, но в алфавитном порядке школтеряется, когда я делаю это:

team_list = Team.objects.order_by('school')
sorted_team_list = sorted(team_list, key=lambda x: x.win_pct, reverse=True)

1 Ответ

1 голос
/ 30 июля 2010

Сделайте это в два этапа, неплохо, так как сортировки стабильны:

from operator import attrgetter

sorted_team_list = sorted(team_list, key=attrgetter('school'))
sorted_team_list = sorted(sorted_team_list, key=attrgetter('win_pct'), reverse=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...