2010-03-29 1 views
0

Я надеюсь, что кто-то может помочь мне с быстрым вопросом, связанным с цепочкой запросов Django. Я замечу, что замедление замедляется, потому что я оцениваю множество точек данных в базе данных для создания тенденций данных. Мне было интересно, есть ли способ, чтобы привязанные фильтры оценивались локально, а не попадали в базу данных. Вот (сырой) пример:Оценка Django Chained QuerySets Локально

pastries = Bakery.objects.filter(productType='pastry') # <--- will obviously always hit DB, when evaluated 
cannoli = pastries.filter(specificType='cannoli') # <--- can this be evaluated locally instead of hitting the DB when evaluated, as long as pastries was evaluated? 

Я проверил документы, и я не вижу ничего, указав на это, так что я предполагаю, что это не возможно, но я хотел бы проверить с «braintrust» первый ;-) ,

BTW - Я знаю, что я могу сделать это сам, внедряя некоторые методы, чтобы перебирать эти точки данных и оценивать критерии, но есть так много данных, что мой срок не позволяет мне вручную реализовать это.

Заранее спасибо.

ответ

1

QuerySet методы всегда создают SQL, который возвращает желаемое выражение. Вот почему вы не можете, например, вызывать различные методы после нарезки; SQL не поддерживает этот синтаксис. ORM делает не что иное, как сборку SQL. Если вам нужна более удобная обработка, вам нужно будет выполнить ее в коде Python самостоятельно.

+0

Спасибо, а не то, на что я надеялся, но вроде того, что я ожидал :-( – jnadro52