Ответ
Модель в 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')