Zamiast ładowania modelu, możesz utworzyć właściwość w swoim modelu, a po uzyskaniu dostępu do właściwości może ona odczytać bazę danych:
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)
Teraz po załadowaniu możesz odwołać się do mything.foobar
, a pierwszy dostęp pobierze odszyfrowanie z bazy danych, zachowując je do późniejszego dostępu.
Ma to również tę zaletę, że jeśli jakiś kod nie będzie miał zastosowania do odszyfrowania, to się nie stanie.