在每个数据库查询上调用Django to_python函数

时间:2011-11-22 23:14:15

标签: python django django-admin

我正在开发一个允许用户提交表单的Web应用程序。表单提交后,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)

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

1 个答案:

答案 0 :(得分:1)

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

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