Cat

Django 8. Первая модель

В этом посте создадим первую модель.

Все статьи

Icon Link

Дополнительные материалы

Icon Link

Реклама

Icon Link
Сайт на Django proDream 08 Август 2023 Просмотров: 852

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

Автор

    Нет комментариев

    Реклама