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



Pdf көрінісі
бет293/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   289   290   291   292   293   294   295   296   ...   334
Байланысты:
Изучаем Python

models.py
from django.db import models
class Topic(models.Model):
...

class Entry(models.Model):
"""Информация, изученная пользователем по теме"""

topic = models.ForeignKey(Topic, on_delete=models.CASCADE)

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

class Meta:
verbose_name_plural = 'entries'
def __str__(self):
"""Возвращает строковое представление модели."""

return f"{self.text[:50]}..."


Начало работы над приложением
405
Класс 
Entry
наследует от базового класса 
Model
, как и рассмотренный ранее класс 
Topic

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

. Термин 
внешний ключ
(foreign key) происходит из теории баз данных; внешний ключ со-
держит ссылку на другую запись в базе данных. Таким образом каждая запись 
связывается с конкретной темой. Каждой теме при создании присваивается ключ, 
или идентификатор. Если потребуется установить связь между двумя записями 
данных, Django использует ключ, связанный с каждым блоком информации. Вскоре 
мы используем такие связи для получения всех записей, связанных с заданной те-
мой. Аргумент 
on_delete=models.CASCADE
сообщает 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
.
Проведите миграцию базы данных и проверьте вывод:
(ll_env)learning_log$ 


Достарыңызбен бөлісу:
1   ...   289   290   291   292   293   294   295   296   ...   334




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

    Басты бет