在我的测试环境中,我通过运行“pip install django-pgcrypto”安装了 pg-crypto。我使用“sudo -u postgres psql”手动登录数据库,然后连接到数据库并使用“CREATE EXTENSION pgcrypto;”安装扩展。然后我将我的一个模型上的一个字段从“models.EmailField”更改为“pgcrypto.EncryptedEmailField”,然后运行 makemigrations 和 migrate。
通过调用 API 视图,我能够成功创建一个新帐户。然后我使用 Postgres 控制台进入数据库,可以看到它已经加密了该新用户的电子邮件字段,但之前的条目是相同的。现在,当我登录 Django 管理控制台时,我收到错误“Corrupt ascii armour”。
我认为这是因为该表现在混合了未加密和加密的电子邮件字段。如果我从一个新数据库开始,那么所有字段都会被加密,并且我不会在管理控制台中收到错误消息。
请有人建议我如何加密现有条目,或者是否有办法通过 Django 迁移,所以我不必从新数据库开始?