6
Si estoy recuperación de un objeto con Django, puedo usar .select_related()
para instruir a Django para conseguir todos los objetos de clave externa, así, a saber:django: select_related() en un objeto ya existente?
obj = ModelClass.objects.select_related().get(id=4) #1 db hit
foo = obj.long.chain.of.stuff #no db hit
Si ya tengo obj
, sin que haya sido .select_related()
, que es:
def doit(obj):
obj.long.chain.of.stuff #4 db hits
¿hay alguna forma de que django complete todas sus relaciones con la clave externa? Algo así como:
def doit(obj):
obj.magic() #1 db hit
obj.long.chain.of.stuff #no db hits
Creo que esa será tu única manera. Sin embargo, me aseguraría de comentar ese código, por lo que cualquiera que lo mire más tarde no se rascará la cabeza preguntándose por qué lo hizo, o peor, lo eliminará porque parece redundante. –