2015-06-09 3 views
0

Я ищу, чтобы перетасовать только часть запроса в django.Shuffle queryset в Django

qs = [obj1(order=0), obj2(order=1), obj3(order=999), obj4(order=999), .....] 

QuerySet заказана поле «порядок», который может быть что угодно, от 0 - 999.

конечный результат должен быть все объекты, которые не 999 будут заказанные от 0 и до,

, и только объекты с порядком 999 будут перетасованы.

Возможно ли это?

+0

Можете ли вы уточнить, что вы подразумеваете под «перемешиваются»? – OrenD

+0

Я имею в виду случайность. – yaniv14

ответ

1

Учитывая, что QuerySet не слишком большой, чтобы быть отсортированы в виде списка, вы можете сделать следующее:

shuffled = sorted(qs, key=lambda item: item.order if item.order != 999 else 999 + random.random())