Thay vì khi tải mô hình, bạn có thể tạo một thuộc tính trên mô hình của mình và khi thuộc tính được truy cập, nó có thể đọc cơ sở dữ liệu:
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)
Bây giờ sau khi tải, bạn có thể tham khảo mything.foobar
và lần truy cập đầu tiên sẽ truy xuất giải mã từ cơ sở dữ liệu, giữ nó cho các lần truy cập sau.
Điều này cũng có lợi thế là nếu một số mã của bạn không được sử dụng để giải mã, thì điều đó sẽ không xảy ra.