Метод create_superuser

Метод create_superuser применяется к менеджеру пользователей и создает нового суперпользователя с указанными учетными данными. Он автоматически устанавливает для пользователя флаги is_staff, is_superuser и is_active в значение True, что дает ему полный доступ к административной панели. Метод обычно используется в скриптах инициализации или при создании учетных записей администраторов через код.

Синтаксис

pythonUserModel.objects.create_superuser(username, email, password, **extra_fields)

Параметры

Метод принимает обязательные позиционные аргументы: username - имя пользователя, email - адрес электронной почты, password - пароль для учетной записи. Также можно передать дополнительные поля модели через именованные аргументы **extra_fields, например, first_name, last_name или произвольные поля, определенные в кастомной модели пользователя.

Пример . Создание суперпользователя

Создадим суперпользователя с именем "admin", почтой "admin@example.com" и паролем "secure_pass123":

pythonfrom django.contrib.auth import get_user_model

User = get_user_model()

superuser = User.objects.create_superuser(
  username="admin",
  email="admin@example.com",
  password="secure_pass123"
)

print(superuser.username)
print(superuser.is_superuser)
print(superuser.is_staff)

Результат выполнения кода:

python"admin"
"True"
"True"

Пример . С дополнительными полями

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

pythonfrom django.contrib.auth import get_user_model

User = get_user_model()

superuser = User.objects.create_superuser(
  username="john_doe",
  email="john@example.com",
  password="johnadmin123",
  first_name="John",
  last_name="Doe"
)

print(f"Full name: {superuser.get_full_name()}")
print(f"Is active: {superuser.is_active}")

Результат выполнения кода:

python"Full name: John Doe"
"Is active: True"

Пример . Использование в скрипте инициализации

Создадим суперпользователя только в том случае, если его еще нет в базе данных:

pythonfrom django.contrib.auth import get_user_model

User = get_user_model()

if not User.objects.filter(username="admin").exists():
  User.objects.create_superuser(
    username="admin",
    email="admin@example.com",
    password="defaultadmin123"
  )
  print("Superuser created successfully")
else:
  print("Superuser already exists")

Результат выполнения кода:

python"Superuser created successfully"

Смотрите также

  • метод create_user,
    который создает обычного пользователя без прав администратора
  • метод authenticate,
    который проверяет учетные данные пользователя
  • метод login,
    который выполняет вход пользователя в систему
  • метод set_password,
    который устанавливает пароль для существующего пользователя