Ответ 1
Вы не можете изменить порядок запроса после того, как срез был сделан, поэтому используйте другой подход
import random
items = sorted(MyModel.objects.all().order_by('nr')[:10], key=lambda x: random.random())
У меня есть запрос:
items = MyModel.objects.all().order_by('nr')[:10]
и я получаю 10 предметов с более высоким номером. Теперь мне нужно смешать эти результаты. Как это сделать?
Вы не можете изменить порядок запроса после того, как срез был сделан, поэтому используйте другой подход
import random
items = sorted(MyModel.objects.all().order_by('nr')[:10], key=lambda x: random.random())
Любопытно, что эта не очень хорошо документированная функция работает:
Country.objects.order_by('?')
источник: http://www.jpstacey.info/blog/2008/09/03/random-ordering-of-query-results-in-django
Удивительно, существующая документация содержит очень мало сока Google, если вы не ищете "случайный", а не "случайный".
ОК, вы не можете повторно заказать запрос после его вставки, но вы можете сделать это вместо
import random
items = list(MyModel.objects.all().order_by('nr')[:10])
random.shuffle(items)