我有一个按学校名称排序的团队的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)
最佳答案
分两步进行,这很不错,因为排序很稳定:
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)