Django 8. Первая модель
В этом посте создадим первую модель.
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 225028
Реклама
Для постов на сайте и бота выдающего архив с дополнительными материалами, нужен удобный способ хранения файлов. Для этого будем использовать модель в Django.
В Django модель - это класс, который определяет структуру и поведение данных в вашем приложении. Он представляет таблицу в базе данных, где каждое поле в модели соответствует столбцу в таблице.
Первая модель.
Давайте создадим первую модель, которая в последствии будет расширена.
Откроем файл models.py
в директории приложения.
class PostFilesModel(models.Model):
title = models.CharField(max_length=200,
verbose_name='Имя файла')
file = models.FileField(upload_to='post_files/')
code = models.IntegerField(default=0,
verbose_name='Код файла',
unique=True)
download_count = models.IntegerField(default=0,
verbose_name='Скачиваний')
class Meta:
verbose_name = 'Файл поста'
verbose_name_plural = 'Файлы постов'
def increment_download_count(self):
self.download_count += 1
self.save()
def __str__(self):
return self.title
Разберём написанное:
Мы создали класс PostFilesModel
и унаследовали его от встроенного в Django класса Model
.
В нём мы прописали три поля:
title
- поле типаCharField
. В нём хранятся строки. Мы в него будем передавать имя файла. В параметрах поля определена максимальная длинаmax_length
в 200 символов и передали имя поляverbose_name
.file
- поле типаFileField
. Представляет собой возможность загружать файлы на сервер. В нём мы указали параметрupload_to
указывающий куда будет загружаться файл. Это не полный путь! Все файлы будут загружаться в папку media, а указанный выше путь, это путь внутри папки media.code
- поле типаIntegerField
. В нём хранятся целочисленные значения. В данное поле будет прописываться цифровой код, по которому можно будет получить файл у бота.download_count
- поле типаIntegerField
. В нём будет вестись статистика по скачиваниям файла. Кроме упомянутого ранее параметра определяющего имя поля, также был передан параметрdefault
, обозначающий значение по умолчанию для создаваемого объекта модели.
Подкласс Meta.
Далее создали внутренний класс Meta
. В этом классе настраиваются различные параметры модели, такие как сортировка, указание на конкретную таблицу в БД, имя модели и множество других.
В нашем случае, мы передаём два параметра: Имя и Множественное имя модели.
Собственный метод и переопределение.
Ниже определён метод increment_download_count
. Данный метод при вызове будет увеличивать счётчик загрузок на единицу.
И последний метод представляет переопределение метода __str__
, возвращающего текстового представления поля title
.
Миграции БД.
Применим изменения вызвав создание миграций и саму миграцию, выполнив две команды в терминале:
python manage.py makemigrations
python manage.py migrate
Все статьи