Перейти к контенту

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

Сайт на Django Иван Ашихмин 1264

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

Django 8. Первая модель
Сайт на Django Иван Ашихмин 1264

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

Автор

Иван Ашихмин

Программист, фрилансер и автор гайдов. Занимаюсь разработкой ботов, сайтов и не только.

Войдите, чтобы оставить комментарий.

Комментариев пока нет.