Mi chiedo se sia una buona idea fare quanto segue:
Ho un modello Django (che è correlato a una migrazione, quindi ha una voce del database) con un mucchio di proprietà. Accedervi sono ovviamente colpire il database ogni volta.
Ho anche molti metodi che usano queste proprietà, come:
def is_good(self):
return not self.bad and self.good > self.threshold
E questi metodi sono usati piuttosto frequentemente. Quindi sto cercando di ridurre il più possibile le query del database, per le prestazioni.
Forse posso sfruttare il fatto che i miei modelli sono molto "statici", il che significa che la maggior parte di questi attributi non cambierà mai i loro valori, quindi self.bad
o self.good
e self.threshold
saranno sempre conserva gli stessi valori e non cambierà mai nel database. Forse posso usare questo a mio vantaggio e cache is_good()
per ridurre il lavoro del database?
def is_good(self):
try:
return self._is_good
except AttributeError:
self._is_good = not self.bad and self.good > self.threshold
return self._is_good
Questa è una pratica comune e raccomandata?