Django模型可以使用MySQL函数吗?

Ton*_*ony 4 python mysql django django-models

有没有办法强制Django模型在每次读取或加载模型数据时将字段传递给MySQL函数?为了澄清我在SQL中的含义,我希望Django模型能够产生如下内容:

在模型加载时:SELECT AES_DECRYPT(fieldname,password)FROM tablename

在模型保存上:INSERT INTO tablename VALUES(AES_ENCRYPT(userinput,password))

Ned*_*der 6

您可以在模型上创建属性,而不是模型加载,当访问属性时,它可以读取数据库:

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)
Run Code Online (Sandbox Code Playgroud)

现在加载后,您可以参考mything.foobar,第一次访问将从数据库中检索解密,保留它以供以后访问.

这也有一个好处,如果你的一些代码没有用于解密,它就不会发生.