Какую роль выполняют модели в Django

Ответ

Модель в Django — это Python-класс, который является единственным и окончательным источником данных о структуре таблицы в базе данных. Модели позволяют работать с БД через ORM (Object-Relational Mapping), используя Python-код вместо написания SQL-запросов.

Каждый класс модели соответствует таблице в БД, а каждый его атрибут (поле) — столбцу в этой таблице.

Пример модели

from django.db import models

# Этот класс будет преобразован в таблицу 'yourapp_article'
class Article(models.Model):
    # Атрибуты станут столбцами в таблице с определенными типами данных
    title = models.CharField(max_length=200, verbose_name="Заголовок")
    content = models.TextField(verbose_name="Содержимое")
    published_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата публикации")
    is_published = models.BooleanField(default=True, verbose_name="Опубликовано")

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = "Статья"
        verbose_name_plural = "Статьи"

Ключевые возможности

  • Абстракция от БД: Позволяют работать с записями как с объектами Python, скрывая сложность SQL.
  • Миграции: Django автоматически отслеживает изменения в моделях и генерирует файлы миграций для безопасного обновления схемы базы данных (makemigrations и migrate).
  • Валидация данных: Поля моделей (CharField, IntegerField и др.) предоставляют встроенные механизмы валидации.
  • API для запросов: Предоставляют мощный и гибкий API для выполнения CRUD-операций (создание, чтение, обновление, удаление).
    # Пример запроса
    Article.objects.filter(is_published=True).order_by('-published_at')