Недавно я создал пользовательскую модель пользователя в проекте Django 1.11. Он привязан к Django Регистрации и в целом работает хорошо. Однако я получаю сообщение об ошибке при попытке сделать пользователя активным в панели администратора. Я получаю следующую ошибку:
normalize() argument 2 must be str, not None
С ошибкой, созданной из-за этой функции:
class UsernameField(forms.CharField):
def to_python(self, value):
return unicodedata.normalize('NFKC', super(UsernameField, self).to_python(value))
Вот моя модель пользователя клиента:
from django.conf import settings
from django.db import models
from django.contrib.auth.models import AbstractUser, BaseUserManager
class UserManager(BaseUserManager):
def create_user(self, email, password):
user = self.model(email=self.normalize_email(email))
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password):
user = self.create_user(email, password)
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
class User(AbstractUser):
email = models.EmailField('email address', unique=True)
first_name = models.CharField('first name', max_length=30, blank=True, null=True)
last_name = models.CharField('last name', max_length=150, blank=True, null=True)
username = models.CharField('username', max_length=150, blank=True, null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
class Meta:
verbose_name = 'user'
verbose_name_plural = 'users'
Здесь это форма, которую я использую при сохранении новых пользователей:
from django import forms
from django_registration.forms import RegistrationForm
from users.models import User
class CustomRegistrationForm(RegistrationForm):
# remove password confirmation
def __init__(self, *args, **kwargs):
super(CustomRegistrationForm, self).__init__(*args, **kwargs)
self.fields.pop('password2')
first_name = forms.CharField(max_length=30, label='First name')
last_name = forms.CharField(max_length=30, label='Last name')
class Meta(RegistrationForm.Meta):
model = User
fields = ('email', 'first_name', 'last_name')
help_texts = {
'password2': None
}
Есть мысли о том, что я делаю неправильно?