16

我有疑问:

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

我得到了 10 个数量更高的项目。现在我必须混合这些结果。怎么做?

4

3 回答 3

23

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

Country.objects.order_by('?')

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

令人惊讶的是,现有文档几乎没有 Google 果汁,除非您搜索“随机”而不是“随机”。

于 2014-08-25T15:11:52.287 回答
21

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

import random
items = sorted(MyModel.objects.all().order_by('nr')[:10], key=lambda x: random.random())
于 2012-08-22T13:08:50.450 回答
13

好的,您无法在拉入查询集后对其重新排序,但您可以这样做

import random
items = list(MyModel.objects.all().order_by('nr')[:10])
random.shuffle(items)
于 2012-08-22T13:10:12.500 回答