2010-07-29 44 views
1

我有一個按學校名排序的團隊的QuerySet。其中一個屬性是跟蹤團隊勝率的模型方法。我想要從最高勝率到最低勝率。如果球隊擁有相同的勝率,我希望他們按學校字母順序排列。我怎麼是這樣的:當一個屬性是模型方法時,Django QuerySet的升序/降序排序

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

因爲勝率是一個模型的方法,我一直在使用Python來排序查詢集已在按字母順序排列,但學校的字母順序丟失當我這樣做:

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

回答

1

做的兩個步驟,不壞,因爲各種各樣的穩定:

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) 
+0

感謝響應,但學校會以相反的字母順序排列。我如何扭轉win_pct而不是學校? – Wally 2010-07-29 23:50:04

+0

啊,看更新。 – ars 2010-07-29 23:51:52