386
Глава 18 •
Знакомство с Django
Определение
моделей
Ненадолго задумаемся, какие данные нам понадобятся. Каждый пользователь
создает набор тем в своем журнале. Каждая запись, которую он сделает, будет при-
вязана к определенной теме, а записи будут выводиться в текстовом виде. Также
необходимо хранить временну
́
ю метку каждой записи, чтобы пользователь знал,
когда эта запись была создана.
Откройте файл
models .py
и просмотрите его текущее содержимое:
models.py
from django.db
import models
# Создайте здесь свои модели.
Модуль с именем
models
импортируется автоматически, и нам предлагается создать
свои модели.
Модель
сообщает Django, как работать с данными, которые будут хра-
ниться в приложении. С точки зрения кода модель представляет собой обычный
класс; она содержит атрибуты и методы, как и все остальные классы, рассматри-
вавшиеся нами ранее. Вот как выглядит модель тем обсуждения, которые будут
сохраняться пользователями:
from django.db import models
class Topic(models.Model):
"""Тема, которую изучает пользователь"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Возвращает строковое представление модели."""
return self.text
Мы создали класс с именем
Topic
, наследующий от
Model
— родительского класса,
включенного в Django и определяющего базовую функциональность модели. Класс
Topic
содержит всего два атрибута:
text
и
date_added
.
Атрибут
text
содержит данные
CharField
— блок данных, состоящий из символов,
то есть текст
. Атрибуты
CharField
могут использоваться для хранения неболь-
ших объемов текста: имен, заголовков, названий городов и т. д. При определении
атрибута
CharField
необходимо сообщить Django, сколько места нужно зарезер-
вировать для него в базе данных. В данном случае задается максимальная длина
max_length
, равная 200 символам; этого должно быть достаточно для хранения
большинства имен тем.
Атрибут
date_added
содержит данные
DateTimeField
— блок данных для хранения
даты и времени
. Аргумент
auto_add_now=True
приказывает Django автоматически
присвоить этому атрибуту текущую
дату и время каждый раз,
когда пользователь
создает новую тему.
Достарыңызбен бөлісу: