我有一个使用电子邮件作为用户名的自定义用户模型。 我已加密电子邮件字段,使其与GPDR一致(我将保存很多个人信息)。 我添加了一个带有索引的email_hash字段,以便数据库能够立即检索用户。 我已经修改了用户对象管理器的get_natural_key以使用哈希进行检索。
但是现在我面临一个问题,我必须禁用字段电子邮件(用户名字段)的唯一性,但是当我尝试进行迁移时,Django不允许我这样做。
myuser.MyUser: (auth.E003) 'MyUser.email' must be unique because it is named as the 'USERNAME_FIELD'.
否则,我希望在电子邮件字段而不是在email_hash字段上触发唯一性错误...。
如何以用户身份使用功能已加密的电子邮件字段并为索引存储哈希?
编辑:
我在电子邮件字段上禁用了唯一性检查,并在设置中添加了SILENCED_SYSTEM_CHECKS = ["auth.E003"]
。
现在,我的问题是将email_hash的唯一性错误呈现为电子邮件错误,以使“具有该电子邮件地址的用户已存在”。消息显示在正确的表单和django rest框架序列化程序字段上。