Невозможно установить для пользовательской модели Django значение is_active - PullRequest
0 голосов
/ 07 мая 2020

Недавно я создал пользовательскую модель пользователя в проекте 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
        }

Есть мысли о том, что я делаю неправильно?

1 Ответ

0 голосов
/ 20 июня 2020

У меня была аналогичная проблема. Просто назначьте пользователю имя пользователя, и вы сможете изменить is_active. В качестве альтернативы вы можете предварительно ввести имя пользователя при регистрации / регистрации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...