Ошибка атрибута Django при создании суперпользователя

Я создал пользовательскую модель пользователя с помощью AbstractBaseUser. Когда я пытаюсь создать суперпользователя с помощью терминала через команду createsuperuser.

Я получаю

in create_superuser
    user.is_staff = True
AttributeError: can't set attribute

Ниже приведен мой код для создания пользовательской модели пользователя.

import uuid
from django.db import models
from django.contrib.auth.models import (
 AbstractBaseUser, AbstractUser, BaseUserManager
)


class AdminUserManager(BaseUserManager):
 def create_user(self, email_id, password=None, *args, **kwargs):
  if not email_id:
   raise ValueError('User must have an Email ID')

  user = self.model(email_id=email_id)
  user.set_password(password)
  user.save(using = self._db)

  return user

 def create_staffuser(self, email_id, password, *args, **kwargs):
  user = self.create_user(
   email_id, password=password
  )
  user.is_staff = True
  user.save(using = self._db)

  return user
 
 def create_superuser(self, email_id, password, *args, **kwargs):
  user = self.create_user(
   email_id, password=password
  )

  user.is_staff = True
  user.is_superuser = True

  user.save(using = self._db)

  return user


USER_ROLE = (
  ('pilot', 'pilot'),
  ('admin', 'admin')
)

class AdminUser(AbstractBaseUser):
  user_uid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
  profile_picture = models.ImageField(upload_to='user_profile_picture/', null=True, blank=True)
  user_role = models.CharField(max_length=10, choices=USER_ROLE)
  email_id = models.EmailField(verbose_name='Email ID', unique=True)
  first_name = models.CharField(max_length=100)
  last_name = models.CharField(max_length=100)
  phone_number = models.CharField(max_length=20)
  created_at = models.DateTimeField(auto_now_add=True)
  updated_at = models.DateTimeField(auto_now=True)
  is_verified = models.BooleanField(default=False)

  is_active = models.BooleanField(default=True)
  is_staff = models.BooleanField(default=False)
  is_superuser = models.BooleanField(default=False)

  USERNAME_FIELD = 'email_id'
  REQUIRED_FIELDS = ['first_name', 'last_name']

  def get_full_name(self):
   full_name = f'{self.first_name} {self.last_name}'
   return full_name
 
  def get_short_name(self):
   return self.first_name

  def __str__(self):
   return self.email_id
 
  @property
  def is_staff(self):
   return self.is_staff

  @property
  def is_superuser(self):
   return self.is_superuser

  objects = AdminUserManager()
Вернуться на верх