Фильтр объекта Django (длятся 1000),

Я начал использовать PDO, потому что поддержка оператора лучше, по-моему. Я использую уровень доступа к данным ActiveRecord-esque, и намного легче реализовать динамично сгенерированные операторы. Привязка параметров MySQLi должна быть сделана в единственной функции/вызове метода, поэтому если бы Вы не знаете до времени выполнения, сколько параметров требуется связать, Вы вынуждены использовать call_user_func_array() (я полагаю, что это - правильное имя функции) для выборов. И забудьте о простой динамической привязке результата.

Больше всего, мне нравится PDO, потому что это - очень разумный уровень абстракции. Это просто в использовании он в абсолютно абстрактных системах, где Вы не хотите писать SQL, но это также облегчает использовать более оптимизированный, чистый тип запроса системы, или к смешиванию и подгонке два.

6
задан Federer 19 October 2009 в 11:24
поделиться

1 ответ

Решение:

queryset = Shop.objects.filter(id=someArray[id])
limit = 1000
count = queryset.count()
endoflist = queryset.order_by('timestamp')[count-limit:]

endoflist - это тот набор запросов, который вам нужен.


Эффективность:

Следующее - из документации django о reverse () queryset метод.

Чтобы получить "последние" пять элементов в набор запросов, вы можете сделать это:

 my_queryset.reverse () [: 5]

Обратите внимание, что это не совсем то же самое. как нарезка от конца последовательности в Python. В приведенном выше примере будет сначала вернуть последний элемент, затем предпоследний пункт и так далее. Если бы у нас было последовательность Python и посмотрел на seq [-5:], мы увидим пятый-последний пункт первый. Django не поддерживает этот режим доступа (вырезание из конец), потому что это невозможно сделать это эффективно в SQL.

Поэтому я не уверен, является ли мой ответ просто неэффективным или крайне неэффективным. Я переместил order_by в последний запрос, но не уверен, имеет ли это значение.

12
ответ дан 9 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: