Способ ограничения возвращаемого набора результатов из набора запросов Django выполняется с помощью среза массива. Например, чтобы получить первые 5 человек:Ограничение количества результатов из QuerySet Django без использования фрагмента
People.objects.all()[0:5]
Или, чтобы получить их упорядоченный по имени:
People.objects.order_by(name)[0:5]
Или заказать по названию, но только тех, кто старше 65:
People.objects.order_by(name).filter(age__gt=65)[0:5]
Фактически только активность Я могу придумать по запросу, который не имеет, имеет функцию ограничения.
Что я хотел бы знать, это метод (внутренний, документированный или иной), который может быть вызван на QuerySet
, который действует как предел или срез? Если нет, то как лучше всего это сделать?
Примечание:
- Да, это, вероятно, плохая идея, нет, я не супер увлечен его реализации, но если бы было хорошей причины для того, чтобы быть сделано, не так ли?
- Да, я знаю, что кусочки выполняются лениво, это не то, о чем я прошу.
- This is not a duplicate of this question, как принято ответ говорит:
ли
results[:max_count]
в целях, после.order_by()
.
Что вы пытаетесь достичь или избежать, не используя кусочек? –
Ничего особенного. Я искал какой-то код для библиотеки django, который мог бы только возвращать список, а не набор запросов, и возникла проблема с его срезанием, потому что ленивый аспект среза не имел значения, поскольку он сначала преобразовал весь запрос в список , –
В соответствии с [документацией] (https://docs.djangoproject.com/en/1.7/topics/db/queries/#limiting-querysets) разрезание - единственный способ сделать это. – thefourtheye