Глава 19 • Учетные записи пользователей
Миграция базы данных
Зная значение идентификатора, можно провести миграцию базы данных. Когда
вы это делаете, Python предлагает связать модель
Topic
с конкретным владельцем
временно или добавить в
models .py
значение по умолчанию, которое сообщит, как
следует поступить. Выберите вариант 1:
❶
(ll_env)learning_log$
python manage.py makemigrations learning_logs ❷
You are trying to add a non-nullable field 'owner' to topic without a default;
we can't do that (the database needs something to populate existing rows).
❸
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a
null value for this column)
2) Quit, and let me add a default in models.py
❹
Select an option:
1 ❺
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do
e.g. timezone.now
Type 'exit' to exit this prompt
❻
>>> 1
Migrations for 'learning_logs':
learning_logs/migrations/0003_topic_owner.py
- Add field owner to topic
(ll_env)learning_log$
Сначала выдается команда
makemigrations
. В ее выходных данных
Django со-
общает, что мы пытаемся добавить обязательное поле (значения которого отличны
от null) в существующую модель (
topic
) без указания значения по умолчанию.
Django предоставляет два варианта
: мы можем либо указать значение по умол-
чанию прямо сейчас, либо завершить выполнение программы и добавить значение
по умолчанию в
models .py
. В точке
выбирается первый вариант. Тогда Django
запрашивает значение по умолчанию
.
Чтобы связать все существующие темы с исходным административным пользо-
вателем
ll_admin
, я ввел в точке
идентификатор пользователя 1. Вы можете
использовать идентификатор любого из созданных пользователей; он не обязан
быть суперпользователем. Django проводит миграцию базы данных, используя это
значение, и создает файл миграции
0003_topic_owner .py
, добавляющий поле
owner
в модель
Topic
.
Теперь можно провести миграцию. Введите следующую команду в активной вир-
туальной среде:
(ll_env)learning_log$