Для постов на сайте и бота выдающего архив с дополнительными материалами, нужен удобный способ хранения файлов. Для этого будем использовать модель в 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
Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Комментариев пока нет.