Как автоматизировать создание суперпользователя для моего проекта django при первой миграции?

#django #django-models #django-rest-framework #django-views #django-forms

Вопрос:

Я создаю суперпользователя с помощью команды python manage.py createsuperuser

Я хотел бы установить адрес электронной почты, пароль и создать суперпользователя во время выполнения моих первых миграций.

Каков наилучший способ достичь этого?

Комментарии:

1. python manage.py createsuperuser вы уже сказали, как это сделать

2. Суперпользователь Django запрашивает адрес электронной почты и пароль? Я не понимаю, о чем вы просите?

3. Вам следует сразу же выполнить первую миграцию, чтобы сразу же настроить sql lite.

4. я хочу автоматизировать создание суперпользователя при моей первой миграции БД.

Ответ №1:

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

Вы можете добавить пользовательский код python в файл миграции с помощью runpyton.

Предположим, у вас есть приложение под названием core . Вы можете либо отредактировать существующую миграцию (которая еще не была применена на сервере), либо добавить новую (я выберу второй вариант).

 python manage.py makemigrations core --empty
 

Теперь в созданный файл добавьте RunPython запись:

 from django.conf import settings
from django.db import migrations


def create_superuser(apps, editor):
    User = apps.get_model(settings.AUTH_USER_MODEL)
    User.objects.create_superuser('superuser@example.com', 'changethispassword')


class Migration(migrations.Migration):
    dependencies = [
        ('core', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(create_superuser, migrations.RunPython.noop),
    ]