我创建列表的代码是:
choices = [] for bet in Bet.objects.all(): #... #Here is code that skip loop if bet.choice exist in choices[] #... temp = { 'choice':bet.choice, 'amount':bet.sum, 'count':bets.filter(choice=bet.choice).count()} choices.append(temp) choices.sort(key=attrgetter('choice'), reverse=True) choices.sort(key=attrgetter('amount'), reverse=True) choices.sort(key=attrgetter('count'), reverse=True)
我必须按列表排序因为模型orderby()不能按count()排序,可以吗?
你的字典都没有choice
,amount
或count
属性.这些是键,所以你需要使用一个itemgetter()
对象.
from operator import itemgetter choices.sort(key=itemgetter('choice'), reverse=True) choices.sort(key=itemgetter('amount'), reverse=True) choices.sort(key=itemhetter('count'), reverse=True)
如果要按多个条件排序,只需按以下顺序命名的条件排序一次:
choices.sort(key=itemgetter('count', 'amount', 'choice'), reverse=True)
但是,您可能希望让数据库进行排序.