I stedet for på modelbelastning kan du oprette en egenskab på din model, og når ejendommen er tilgået, kan den læse databasen:
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 efter indlæsning, kan du henvise til mything.foobar
, og den første adgang vil hente dekrypteringen fra databasen og holde på den til senere adgang.
Dette har også den fordel, at hvis noget af din kode ikke kan bruges til dekrypteringen, sker det ikke.