Книга «Изучаем Python»



Pdf көрінісі
бет235/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   231   232   233   234   235   236   237   238   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 18 • Знакомство с Django
зователей и группы, а также вносить изменения в уже существующие настройки. 
Помимо этого можно работать с данными, связанными с только что определенной 
моделью 
Topic
.
Рис. 18.2.
Административный сайт с включением модели Topic
ПРИМЕЧАНИЕ
Если в браузере появляется сообщение о недоступности веб-страницы, убедитесь в том, что сервер 
Django работает в терминальном окне . Если сервер не работает, активизируйте виртуальную среду 
и снова введите команду python manage .py runserver .
Добавление тем
Когда модель 
Topic
зарегистрирована на административном сайте, добавим 
первую тему. Щелкните на ссылке 
Topics
, чтобы перейти к странице 
Topics
; стра-
ница практически пуста, потому что еще нет ни одной темы для выполнения 
операций. Щелкните на ссылке 
Add
; открывается форма для добавления новой 
темы. Введите в первом поле текст 
Chess
и щелкните на ссылке 
Save
. Вы воз-
вращаетесь к административной странице 
Topics
, на которой появляется только 
что созданная тема.
Создадим вторую тему, чтобы у вас было больше данных для работы. Снова щелк-
ните на ссылке 
Add
и создайте вторую тему 
Rock
Climbing
. Ссылка 
Save
снова воз-
вращает вас к основной странице 
Topics
, где отображаются обе темы, 
Chess
и 
Rock
Climbing
.
Определение модели Entry
Чтобы сохранить информацию о том, что вы узнали по этим двум темам, необхо-
димо определить модель для записей, которые пользователь делает в своих журна-
лах. Каждая запись должна ассоциироваться с конкретной темой. Такое отношение 
называется 
отношением «многие-к-одному»
, поскольку многие записи могут быть 
связаны с одной темой.


Начало работы над приложением
391
Код модели 
Entry
выглядит так:
models.py
from django.db import models
class Topic(models.Model):
...
 
class Entry(models.Model):
"""Информация, изученная пользователем по теме"""
 
topic = models.ForeignKey(Topic)
 
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
 
class Meta:
verbose_name_plural = 'entries'
def __str__(self):
"""Возвращает строковое представление модели."""
 
return self.text[:50] + "..."
Класс 
Entry
наследует от базового класса 
Model
, как и рассмотренный ранее класс 
Topic

. Первый атрибут, 
topic
, является экземпляром 
ForeignKey

. Термин 
«внешний ключ»
(foreign key) происходит из теории баз данных; внешний ключ со-
держит ссылку на другую запись в базе данных. Таким образом каждая запись свя-
зывается с конкретной темой. Каждой теме при создании присваивается ключ, или 
идентификатор. Если потребуется установить связь между двумя записями данных, 
Django использует ключ, связанный с каждым блоком информации. Вскоре мы 
используем такие связи для получения всех записей, связанных с заданной темой.
Затем идет атрибут с именем 
text
, который является экземпляром 
TextField


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

класс 
Meta
вкладывается в класс 
Entry
. Класс 
Meta
хранит дополнитель-
ную информацию по управлению моделью; в данном случае он позволяет задать 
специальный атрибут, который приказывает Django использовать форму мно-
жественного числа 
Entries
при обращении более чем к одной записи. (Без этого 
Django будет использовать неправильную форму 
Entrys
.) Наконец, метод 
__str__()
сообщает Django, какая информация должна отображаться при обращении к от-
дельным записям. Так как запись может быть достаточно длинным блоком текста, 
мы приказываем Django выводить только первые 50 символов 

. Также добавля-
ется многоточие — признак вывода неполного текста.
Миграция модели Entry
Так как мы добавили новую модель, миграцию базы данных необходимо провести 
снова. Вскоре вы привыкнете к этому процессу: вы изменяете 
models .py
, выполняете 
команду 
python
manage.py
makemigrations
имя_приложения
, а затем команду 
python
manage.py
migrate
.


392

Достарыңызбен бөлісу:
1   ...   231   232   233   234   235   236   237   238   ...   266




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

    Басты бет