Модель пользователя Django с зашифрованным и хешированным адресом электронной почты в качестве имени пользователя - PullRequest
1 голос
/ 11 мая 2019

У меня есть пользовательская модель пользователя с электронной почтой в качестве имени пользователя.Я зашифровал поле электронной почты, чтобы оно соответствовало требованиям 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 framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...