Au lieu de charger le modèle, vous pouvez créer une propriété sur votre modèle, et lorsque la propriété est accessible, elle peut lire la base de données :
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)
Maintenant, après le chargement, vous pouvez vous référer à mything.foobar
, et le premier accès récupérera le déchiffrement de la base de données, en le conservant pour les accès ultérieurs.
Cela a également l'avantage que si une partie de votre code n'a aucune utilité pour le décryptage, cela ne se produira pas.