Определение модели Entry

We use cookies. Read the Privacy and Cookie Policy

Чтобы сохранить информацию о том, что вы узнали по этим двум темам, необхо­димо определить модель для записей, которые пользователь делает в своих журналах. Каждая запись должна ассоциироваться с конкретной темой. Такое отношение называется отношением «многие-к-одному», поскольку многие записи могут быть связаны с одной темой.

Код модели Entry выглядит так:

models.py

from django.db import models

class Topic(models.Model):

. ....

(1) class Entry(models.Model):

. ."""Информация, изученная пользователем по теме"""

(2) . .topic = models.ForeignKey(Topic)

(3) . .text = models.TextField()

. .date_added = models.DateTimeField(auto_now_add=True)

. .

(4) . .class Meta:

. . . .verbose_name_plural = 'entries'

. .def __str__(self):

. . . ."""Возвращает строковое представление модели."""

(5) . . . .return self.text[:50] + "..."

Класс Entry наследует от базового класса Model, как и рассмотренный ранее класс Topic (1) . Первый атрибут, topic, является экземпляром ForeignKey (2). Термин «внешний ключ» (foreign key) происходит из теории баз данных; внешний ключ содержит ссылку на другую запись в базе данных. Таким образом каждая запись связывается с конкретной темой. Каждой теме при создании присваивается ключ, или идентификатор. Если потребуется установить связь между двумя записями данных, Django использует ключ, связанный с каждым блоком информации. Вскоре мы используем такие связи для получения всех записей, связанных с заданной темой.

Затем идет атрибут с именем text, который является экземпляром TextField (3). Полю такого типа ограничение размера не требуется, потому что размер отдельных записей не ограничивается. Атрибут date_added позволяет отображать записи в порядке их создания и снабдить каждую запись временной меткой.

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