我以为我知道这是如何运作的,但有一个我似乎无法弄清楚的错误。
我有一个查询集,其中每个模型都有一个'hotness()'方法,该方法动态返回一个热度值。
这是我的代码:
from item.models import Item
items = Item.objects.all()
items = sorted(items, key=lambda x: x.hotness, reverse=True)
# it does not work.
for i in items:
print i.hotness() # totally out of order, not even close
有什么想法?感谢。
答案 0 :(得分:2)
在您的确切用例中,在sorted()
上使用之前,您不会将QuerySet转换为列表。
items = list(Item.objects.all())
items = sorted(items, key=lambda x: x.hotness(), reverse=True)
应该有用。