je le code suivant, en utilisant Django ORMDjango: charger un ensemble restreint de champs d'objets chargés à l'aide d'une clé étrangère
routes =Routes.objects.filter(scheduleid=schedule.id).only('externalid')
t_list = [(route.externalid, route.vehicle.name) for route in routes])
et il est très lent, parce que les objets de véhicules sont énormes (des dizaines de champs , et je ne peux pas changer cela, il vient d'une base de données héritée). Beaucoup de temps est consacré à la création des objets Véhicule, alors que j'ai seulement besoin du champ nom de cet objet.
Existe-t-il un moyen plus efficace d'obtenir t_list? Je cherche quelque chose comme only() pour accéder aux objets via une clé étrangère.
EDIT: la solution est la suivante:
routes=Routes.objects.filter(scheduleid=schedule.id).select_related("vehicle")
routes= routes.only('externalid','vehicle__name')
Est-ce qu'il existe quelque chose de semblable?
select_related pourrait être un très mauvais choix, car il obtenir tous ForeignKey domaines connexes liés. Si vous ne définissez pas une profondeur et que la table du véhicule a de nombreuses clés étrangères, l'exécution de la requête sera plus grande. – FallenAngel
@FallenAngel: l'OP limite la portée de 'select_related()' à 'Vehicle'. c'est-à-dire 'select_related' ('véhicule') '. –