Quand je fais quelque chose comme p>
i. et ensuite p>
ii. Je frappe dB chaque fois que sur l'étape 2 avec diverses conditions. Y a-t-il un moyen d'obtenir toutes les données en première action et de prendre soin du résultat? P> objets = modèle.Object.all () code> p>
objets.filter (champ_1 = quelque_condition) code> p>
3 Réponses :
Pourquoi ne faites-vous pas juste objs = modèle.Object.filter (champ = condition) code>? Cela dit, une fois que la requête SQL est exécutée, vous pouvez utiliser des expressions Python pour effectuer un filtrage / traitement supplémentaire sans entraîner des hits de base de données supplémentaires. P>
Bien sûr, vous toucherez dB à chaque fois. Filtre () Code> Transforme en instruction SQL qui est exécuté par votre dB, vous ne pouvez pas filtre code> sans le frapper. Donc, vous pouvez récupérer tous les objets dont vous avez besoin avec des valeurs () code> ou ou (modèle.Object.All ()) code> et, comme Zeekay suggéré, utilisez Python Expressions (comme liste similaire compréhensions) pour filtrage supplémentaire. P>
ce n'est pas vrai. Vérifiez les liens de la réponse là-bas: Stackoverflow.com/a/5989752/4213969
Vous n'allez réellement pas frapper le dB avant d'évaluer les QS, les requêtes sont paresseux code> strong>
lire plus ICI STRY>
Après avoir répété votre question, il devient évident que vous demandiez comment prévenir les hits db lors du filtrage pour différentes conditions. P>
qs_l = list(qs) qs1_l = [element for element in qs_l if element.some_field='some_value'] qs2_l = [element for element in qs_l if element.some_field='some_other_value']
Merci une autre question. Puis-je appuyer sur dB sans convertir QuerySet en une liste? Ou peut-être que je peux convertir la liste à un queryset?
Vous ne pouvez pas convertir la liste en requête. Vous pouvez frapper DB plusieurs façons, ils sont énumérés dans le deuxième lien de la réponse de Dting.
Vous pouvez frapper la DB par les méthodes mentionnées dans le lien "En savoir plus ici", par exemple Itération, tranchant avec des partitions, etc. Cette réponse Stackoverflow.com/Questtions/1058135/... et la question connexe pourrait vous intéresser.
Comment savoir que je frappe dB avec mes requêtes?
django_debug_toolbar vous aidera à identifier les hits db