Объект 'Пользователь' не имеет атрибута 'is_staff' Django - PullRequest
2 голосов
/ 22 апреля 2020

Файл "/usr/local/lib/python3.6/dist-packages/django/contrib/auth/forms.py", строка 218, в чистом виде self.confirm_login_allowed (self.user_cache)
Файл "/usr/local/lib/python3.6/dist-packages/django/contrib/admin/forms.py", строка 21, в verify_login_allowed

if not user.is_staff: 
   AttributeError: 'User' object has no attribute 'is_staff' 

[22 апреля / 2020 18:15:51] "POST / admin / login /? Next = / admin / HTTP / 1.1" 500 141020

Я получаю AttributeError при входе в систему как суперпользователь, это показывает AttributeError в / admin / login /

было бы замечательно, если бы кто-нибудь мог помочь мне, где я делаю что-то не так. Огромное спасибо заранее. здесь ниже мой рабочий код:

models.py

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    first_name = models.CharField(_('first name'), max_length=50)
    last_name = models.CharField(_('last name'), max_length=50, blank=True)
    avatar =models.ImageField(upload_to='avatar' , blank=True)
    date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
    is_active = models.BooleanField(_('active'), default=True)

    objects = UserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

Manager.py


from django.contrib.auth.base_user import BaseUserManager


class UserManager(BaseUserManager):
    use_in_migrations = True

    def _create_user(self, email, password, **extra_fields):
        if not email:
            raise ValueError('email must me set')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)

        return user

    def create_user(self, email, password=None, **extra_fields):
        extra_fields.setdefault('is_superuser', False)
        return self._create_user(email, password, **extra_fields)

    def create_superuser(self, email, password, **extra_fields):
        extra_fields.setdefault('is_superuser', True)

        if extra_fields.get('is_superuser') is not True:
            raise ValueError('Super User must have is_superuser=True')

        return self._create_user(email, password, **extra_fields)


1 Ответ

0 голосов
/ 22 апреля 2020

Попробуйте изменить AbstractBaseUser на AbstractUser. Последний имеет поле is_staff. Обратите внимание, после этого вам нужно перенести схему.

...