如何通过函数对django中的模型查询集进行排序

时间:2013-09-08 03:11:33

标签: python django django-queryset

我以为我知道这是如何运作的,但有一个我似乎无法弄清楚的错误。

我有一个查询集,其中每个模型都有一个'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

有什么想法?感谢。

1 个答案:

答案 0 :(得分:2)

在您的确切用例中,在sorted()上使用之前,您不会将QuerySet转换为列表。

items = list(Item.objects.all())
items = sorted(items, key=lambda x: x.hotness(), reverse=True)

应该有用。