【发布时间】:2012-08-22 12:43:09
【问题描述】:
我有疑问:
items = MyModel.objects.all().order_by('nr')[:10]
我得到了 10 件数量更大的物品。现在我必须混合这些结果。怎么做?
【问题讨论】:
-
你所说的“混合”是什么意思?你想随机洗牌吗?
-
是的,我想随机播放这个结果
标签: django
我有疑问:
items = MyModel.objects.all().order_by('nr')[:10]
我得到了 10 件数量更大的物品。现在我必须混合这些结果。怎么做?
【问题讨论】:
标签: django
奇怪的是,这个没有很好记录的功能有效:
Country.objects.order_by('?')
来源:http://www.jpstacey.info/blog/2008/09/03/random-ordering-of-query-results-in-django
令人惊讶的是,the existing documentation 几乎没有 Google 果汁,除非您搜索“随机”而不是“随机”。
【讨论】:
您无法在获取切片后重新排序查询,因此请使用不同的方法
import random
items = sorted(MyModel.objects.all().order_by('nr')[:10], key=lambda x: random.random())
【讨论】:
好的,您不能在拉入查询集后对其重新排序,但您可以这样做
import random
items = list(MyModel.objects.all().order_by('nr')[:10])
random.shuffle(items)
【讨论】: