6
Jeśli jestem pobierania obiektu z Django, mogę używać .select_related()
pouczać Django, aby uzyskać wszystkie kluczy obcych obiektów, jak również, a mianowicie:django: select_related() na już istniejącym obiekcie?
obj = ModelClass.objects.select_related().get(id=4) #1 db hit
foo = obj.long.chain.of.stuff #no db hit
Jeśli mam już obj
, bez niego będąc .select_related()
, że jest:
def doit(obj):
obj.long.chain.of.stuff #4 db hits
jest jakiś sposób, aby uzyskać Django do wypełnienia wszystkich kluczowych relacji zagranicznych? Coś jak:
def doit(obj):
obj.magic() #1 db hit
obj.long.chain.of.stuff #no db hits
Myślę, że to będzie twój jedyny sposób. Zrobiłbym jednak pewien komentarz do tego fragmentu kodu, więc każdy, kto się nim zajmie, nie będzie drapał się w głowę, zastanawiając się, dlaczego tak się stało, albo gorzej, usuń go, ponieważ wygląda na zbędny. –