16

クエリがあります:

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

そして、より高い番号の10個のアイテムを取得します。ここで、これらの結果を混ぜ合わせる必要があります。どうやってするの?

4

3 に答える 3

21

スライスが取得されるとクエリを並べ替えることはできないため、別のアプローチを使用してください

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

OK、プルした後にクエリセットを並べ替えることはできませんが、代わりにこれを行うことができます

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