2010-03-29 8 views
0

J'espère que quelqu'un pourra m'aider avec une question rapide que j'ai à propos du chaînage des querysets Django. Je remarque un ralentissement parce que j'évalue de nombreux points de données dans la base de données pour créer des tendances de données. Je me demandais s'il y avait un moyen d'évaluer localement les filtres chaînés au lieu de cliquer sur la base de données. Voici un (brut) par exemple:Évaluation de Django enchaîné QuerySets localement

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? 

J'ai vérifié les documents et je ne vois rien préciser cela, donc je suppose que ce n'est pas possible, mais je voulais vérifier avec le « braintrust » abord ;-) . BTW - Je sais que je peux le faire moi-même en implémentant des méthodes pour faire une boucle sur ces points de données et évaluer les critères, mais il y a tellement de points de données que mon délai ne me permet pas de les implémenter manuellement.

Merci d'avance.

Répondre

1

QuerySet méthodes produisent toujours SQL qui renvoie l'expression souhaitée. C'est pourquoi vous ne pouvez pas, par exemple, appeler diverses méthodes après avoir tranché; SQL ne supporte pas cette syntaxe. L'ORM ne fait rien de plus qu'assembler ledit SQL. Si vous voulez un traitement plus sophistiqué, vous devrez l'exécuter en code Python.

+0

Merci, pas ce que j'espérais, mais genre de ce que j'attendais :-( – jnadro52

Questions connexes