Начало
работы над приложением
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
.