Короткий ответ
ORM в Django позволяет работать с реляционной базой данных через Python-классы и методы вместо ручного SQL. Класс модели наследуется от django.db.models.Model и отображается на таблицу, а операции выполняются через менеджер объектов.
Как это работает подробнее
Каждый атрибут класса модели соответствует колонке таблицы, а за кулисами ORM переводит операции в оптимизированные SQL-запросы.
- Соответствие. Класс Student с полями name и age превращается в таблицу со столбцами name и age.
- Менеджер объектов. Записи создают, читают, обновляют и удаляют через Student.objects.create(...), Student.objects.all() и student.save().
- Переносимость. Один и тот же код работает с PostgreSQL, MySQL, SQLite и Oracle без переписывания запросов.
- Миграции. Модели — единый источник истины: на их основе Django генерирует миграции для изменения схемы базы данных.
Пример кода
Модель и выборка без SQL
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
# выборка всех книг автора без написания SQL
books = Book.objects.filter(author='Jane Doe')Что использовать на практике
- Данные через модели. Описывай структуру данных классами моделей, а не SQL-скриптами.
- Типовые операции. Для обычных выборок используй методы менеджера: filter(), exclude(), order_by().
- Изменение схемы. Меняй базу через миграции, а не вручную.