Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
python manage.py shell
>>>
from django.contrib.auth.models import User
>>>
User.objects.all() [, , ]
>>>
for user in User.objects.all(): ...
print(user.username, user.id) ...
ll_admin 1
eric 2
willie 3
>>>
В точке
в сеанс оболочки импортируется модель
User
. После этого просматрива-
ются все пользователи, созданные до настоящего момента
. В выходных данных
перечислены три пользователя:
ll_admin ,
eric и
willie .
В точке
перебирается список пользователей, и для каждого пользователя вы-
водится его имя и идентификатор. Когда Django спросит, с каким пользователем
связать существующие темы, мы используем один из этих идентификаторов.
Миграция базы данных
Зная значение идентификатора, можно провести миграцию базы данных.
(venv)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)
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()
>>> 1
Migrations for 'learning_logs':
0003_topic_owner.py:
- Add field owner to topic
Сначала выдается команда
makemigrations
. В ее выходных данных
Django со-
общает, что мы пытаемся добавить обязательное поле (значения которого отличны
от null) в существующую модель (
topic
) без указания значения по умолчанию.
Django предоставляет два варианта
: мы можем либо указать значение по умол-
чанию прямо сейчас, либо завершить выполнение программы и добавить значение
по умолчанию в
models .py
. В точке
выбирается первый вариант. Тогда Django
запрашивает значение по умолчанию
.
Чтобы связать все существующие темы с исходным административным пользо-
вателем
ll_admin
, я ввел в точке
идентификатор пользователя 1. Вы можете