Значение слишком длинное для изменения типа символа (30)
Я получаю это сообщение об ошибке на моем email field
но я использую встроенный django auth system
, Есть ли простой способ переопределить это. Когда пользователь регистрируется, адрес электронной почты добавляется во встроенное поле во встроенной пользовательской системе.
Было бы здорово, если бы можно было увеличить его на 30 символов в зависимости от характера сайта.
2 ответа
Это одна из проблем использования адресов электронной почты для имен пользователей в Django. Многие, многие электронные письма более 30 символов. Одним из распространенных способов решения этой проблемы является использование пользовательского "Бэкенда аутентификации" для аутентификации электронной почты. Используя свой собственный бэкэнд, вы можете аутентифицировать пользователя на основе email
поле вместо username
поле. Затем вы можете сгенерировать имя пользователя на основе этого адреса электронной почты или используя случайно сгенерированные имена пользователей.
Вы можете прочитать больше об этом подходе в моем блоге Django Authentication с использованием адреса электронной почты.
Может быть, это не правильно, но в моем проекте я просто увеличил размер электронной почты пользователя с юга. Образец:
>> ./manage.py schemamigration auth --initial && ./manage migrate auth --fake
Затем я добавил в models.py:
from django.contrib.auth.models import User
field = User._meta.get_field('email')
field.max_length = 254
field = User._meta.get_field('username')
field.max_length = 254
Сейчас:
>> ./manage.py schemamigration auth --auto
>> ./manage.py migrate auth