Можно ли в Django Rest Framework создать суперпользователя с другими входными данными, чем у простого пользователя?

Я начинаю новый проект с Django Rest Framework, и у меня есть конкретная потребность в создании пользователя: для создания учетной записи необходимо предоставить такую информацию, как дата рождения, дата рождения друга, и несколько других сведений.

Но для суперпользователя было бы НЕ актуально давать такую информацию, поэтому я ищу способ потребовать разную информацию для пользователя и суперпользователя. Знаете ли вы, возможно ли это?

В файле models.py я создал 2 различных класса :

  • class UserProfile(AbstractBaseUser, PermissionsMixin)
  • class SuperUserProfile(AbstractBaseUser, PermissionsMixin)

Эти два класса требуют разной информации для создания учетной записи.

Кроме того, я создал класс для управления профилями пользователей :

class UserProfileManager(BaseUserManager): """Менеджер для профилей пользователей""""

def create_user(self, name1, firstName1, email1, name2, firstName2, birthDate2, password=None):
    """Create a new user profile"""

    email1 = self.normalize_email(emailParrain)
    user = self.model(emailParrain=emailParrain,
    name1=name1,
    firstName1=firstName1,
    name2=name2,
    firstNameUser=firstNameUser,
    birthDateUser=birthDateUser)  

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

    return user

def create_superuser(self, email, name, password):
    """Create and save a new superuser with given details"""
    user = self.create_user(email,password)

    user.is_superuser = True
    user.is_staff = True
    user.save(using=self._db)

    return user

Но когда я делаю это, я не могу создать суперпользователя только с указанной информацией (email, имя, пароль).

нужно просто добавить необходимые поля и указать менеджера в модели пользователей

class User (AbstractBaseUser, PermissionsMixin):

    user_name = models.CharField(max_length=150, unique=True)
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    ...

    objects = UserProfileManager()

    USERNAME_FIELD = 'user_name'
    #the user_name and first_name are required 
    REQUIRED_FIELDS = ['user_name', 'first_name']

    def __str__(self):
        return self.user_name
Вернуться на верх