En general, es mejor hacer una sola consulta frente a muchas consultas para un objeto determinado. Digamos que tengo un montón de objetos 'hijo', cada uno con un 'padre'. Consigo todos los objetos 'hijo':Acceso a la clave del objeto relacionado sin recuperar el objeto en App Engine
sons = Son.all()
Entonces, me gustaría llegar a todos los padres de ese grupo de hijos. Yo:
father_keys = {}
for son in sons:
father_keys.setdefault(son.father.key(), None)
entonces puedo hacer:
fathers = Father.get(father_keys.keys())
Ahora, esto supone que son.father.key() en realidad no ir a buscar el objeto. ¿Estoy equivocado en esto? Tengo un montón de código que supone que object.related_object.key() en realidad no busca el objeto relacionado desde el almacén de datos.
¿Estoy haciendo esto bien?
Kick ass answer. Mi aplicación acaba de obtener 10 veces más rápido y más barato: D –
@Sudhir, me alegro de que haya ayudado, ¡gracias por informarme que lo hizo! -) –
Hablando de eso, ¿los objetos se almacenan en caché cuando se recuperan de la tienda? Entonces, si hiciera Father.get (all_keys) en el controlador, ¿intentaría el tiempo de ejecución obtenerlos nuevamente en la plantilla si solo estoy imprimiendo a los hijos con sus padres? –