我有疑问:
items = MyModel.objects.all().order_by('nr')[:10]
我得到10个数字更高的物品。现在我必须混合这些结果。怎么做?
答案 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)