如何混合查询集结果?

时间:2012-08-22 12:43:10

标签: django

我有疑问:

items = MyModel.objects.all().order_by('nr')[:10]

我得到10个数字更高的物品。现在我必须混合这些结果。怎么做?

3 个答案:

答案 0 :(得分:14)

奇怪的是,这个没有很好记录的功能有效:

Country.objects.order_by('?')

来源:http://www.jpstacey.info/blog/2008/09/03/random-ordering-of-query-results-in-django

  

令人惊讶的是,the existing documentation几乎没有Google果汁,除非您随机搜索"而不是"随机"。

答案 1 :(得分:13)

切片拍摄后,您无法对查询重新排序,因此请使用不同的方法

import random
items = sorted(MyModel.objects.all().order_by('nr')[:10], key=lambda x: random.random())

答案 2 :(得分:9)

好的,在您将查询集拉入后无法对其进行重新排序,但您可以执行此操作

import random
items = list(MyModel.objects.all().order_by('nr')[:10])
random.shuffle(items)