М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет325/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   321   322   323   324   325   326   327   328   ...   334
Байланысты:
Изучаем Python

models.py
from django.db import models
from django.contrib.auth.models import User


Редактирование данных
447
cl
ass Topic(models.Model):
"""Тема, которую изучает пользователь"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
"""Возвращает строковое представление модели."""
return self.text
class Entry(models.Model):
...
Сначала модель 
User
импортируется из 
django.contrib.auth
. Затем в 
Topic
до-
бавляется поле 
owner
, используемое в отношении внешнего ключа к модели 
User

Если пользователь удаляется, все темы, связанные с этим пользователем, также 
будут удалены.
Идентификация существующих пользователей
При проведении миграции Django модифицирует базу данных, чтобы в ней хра-
нилась связь между каждой темой и пользователем. Для выполнения миграции 
Django необходимо знать, с каким пользователем должна быть связана каждая 
существующая тема. Проще всего связать все существующие темы с одним поль-
зователем, например суперпользователем. Но для этого сначала необходимо узнать 
идентификатор этого пользователя.
Просмотрим идентификаторы всех пользователей, созданных до настоящего мо-
мента. Запустите сеанс оболочки Django и введите следующие команды:
(ll_env)learning_log$ 
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 спросит, с каким пользователем 
связать существующие темы, мы используем один из этих идентификаторов.


448

Достарыңызбен бөлісу:
1   ...   321   322   323   324   325   326   327   328   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет