Skip to main content
 首页 » 编程设计

python之在每个数据库查询中调用 Django to_python 函数

2025年05月04日35zengkefu

我正在开发一个允许用户提交表单的网络应用程序。提交表单后,get_db_prep_value() 会加密所有字段。我正在努力解决的问题是解密 django 管理应用程序中的字段的功能。解密过程工作正常,问题是在提交表单时调用了 to_python 方法中指定的解密方法。我对 to_python 方法的理解是,它仅在从数据库(选择查询)而不是数据库(更新、插入)进行数据库查询时调用。

这是我的自定义字段类:

class EncryptedField(models.Field): 
    # ... 
 
    def to_python(self, value): 
        return decrypt(value) 
 
    def get_db_prep_value(self, value): 
        return encrypt(value) 

如何才能让 to_python 方法仅在表单加载到更改表单页面上的 django 管理应用程序中时被调用?

请您参考如下方法:

“Field 上的 to_python() 方法是每次验证的第一步。”

https://docs.djangoproject.com/en/1.3/ref/forms/validation/