2009-12-18 2 views
1

Я собираюсь использовать электронную почту как имя пользователя на веб-сайте, однако мне все же необходимо предварительно заполнить обязательное поле имени пользователя в модели пользователя.Django: use hash/guid in username

Первоначально я думал об использовании хэша md5 в качестве имени пользователя, но с учетом ограничения на 30 символов это невозможно. Также я не думаю, что я могу использовать GUID для этого, поскольку они также длиннее 30 символов при преобразовании в строку hex.

Любые предложения с благодарностью!

+0

Что происходит, когда пользователь хочет изменить свой адрес электронной почты? – Glen

+0

Какова ваша фактическая цель здесь, просто чтобы сделать поле имени пользователя уникальным и никогда не использовать его ни для чего? –

+0

@Glen, по-видимому, его нужно будет только изменить в таблице пользователей, поэтому пользователь будет входить в систему со своим адресом электронной почты. В чем проблема? –

ответ

3

Я бы не особо подчеркивал, что GUID длиннее 30 символов. Разумным подходом, вероятно, является хэш-идентификатор GUID с использованием чего-то вроде MD5, а затем обрезание последних двух символов. Ваши шансы на столкновение фактически равны нулю. (16 - ужасно большое количество).

1

Эти ссылки string length of a GUID и Characters in a GUID показывают, что руководство имеет длину всего 16 символов. Его эквивалент ASCII длиннее. Поэтому, пока вы конвертируете назад и вперед перед отображением (или если вы вообще не собираетесь их отображать), GUID прекрасно вписывается в поле имени пользователя.