In plaats van bij het laden van het model, kunt u een eigenschap op uw model maken en wanneer de eigenschap wordt geopend, kan deze de database lezen:
def _get_foobar(self):
if not hasattr(self, '_foobar'):
cursor = connection.cursor()
self._foobar = cursor.execute('SELECT AES_DECRYPT(fieldname, password) FROM tablename')[0]
return self._foobar
foobar = property(_get_foobar)
Nu na het laden, kun je verwijzen naar mything.foobar
, en de eerste toegang haalt de decodering op uit de database en houdt deze vast voor latere toegangen.
Dit heeft ook het voordeel dat als een deel van uw code geen nut heeft voor de decodering, dit niet zal gebeuren.