Можно ли в 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