#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),
]