Эта ошибка возникает из-за валидатора имени пользователя Django .Таким образом, вы можете переопределить его следующим образом (Копия вставлена из документации):
from django.contrib.auth.models import User
from django.contrib.auth.validators import ASCIIUsernameValidator
class CustomUser(User):
username_validator = ASCIIUsernameValidator() # or your custom validator
class Meta:
proxy = True # If no new field is added.
Или, если вы не хотите использовать какие-либо валидаторы, просто переопределите поле имени пользователя .
Обновление
При использовании модели CustomUser
необходимо обновить AUTH_USER_MODEL
в settings.py
.Например:
# settings.py
AUTH_USER_MODEL = 'yourapp.models.CustomUser'
И если вы хотите переопределить поле username
в CustomUser
, то вы можете сделать это следующим образом:
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
username = models.CharField(max_length=255, unique=True)
Пожалуйста, посмотрите документация о том, как использовать пользовательскую модель пользователя в Django.
Для административного сайта вам необходимо переопределить форму входа в систему.Например:
# some form
from django.contrib.auth.forms import AuthenticationForm
class LoginForm(AuthenticationForm):
username = forms.CharField(label='username', max_length=100)
И обновить в urls.py ( согласно этому ответу ):
from django.contrib import admin
from my.forms import AuthenticationForm
admin.autodiscover()
admin.site.login_form = LoginForm
Вход по умолчанию для администратора не работает, поскольку он использует Имя пользователя поле, которое нормализует входное значение.