Значение слишком длинное для изменения типа символа (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
Другие вопросы по тегам