📝 Django

Django ORM: шпаргалка

P
Автор
Pyland
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
84
🌿
Уровень
Средний
🐦 💼 ✈️

ORM (Object-Relational Mapping) позволяет работать с БД через Python-объекты без SQL.

CREATE — создание

# Метод 1: create()
task = Task.objects.create(title="Купить молоко", status="todo")

# Метод 2: save()
task = Task(title="Купить молоко", status="todo")
task.save()

# bulk_create — много объектов за один запрос
Task.objects.bulk_create([
    Task(title="Задача 1"),
    Task(title="Задача 2"),
    Task(title="Задача 3"),
])

READ — чтение

Task.objects.all()                         # все записи
Task.objects.get(pk=1)                     # одна запись (исключение если нет)
Task.objects.filter(status='todo')         # фильтр
Task.objects.exclude(status='done')        # исключить
Task.objects.first()                       # первая
Task.objects.last()                        # последняя
Task.objects.count()                       # количество
Task.objects.exists()                      # bool: есть записи?

Фильтры (lookups)

Task.objects.filter(title__contains='молоко')    # LIKE '%молоко%'
Task.objects.filter(title__icontains='молоко')   # без учёта регистра
Task.objects.filter(title__startswith='Куп')
Task.objects.filter(created_at__date=today)
Task.objects.filter(priority__gt=5)              # >
Task.objects.filter(priority__gte=5)             # >=
Task.objects.filter(priority__lt=10)             # <
Task.objects.filter(priority__in=[1, 2, 3])      # IN
Task.objects.filter(description__isnull=True)    # IS NULL

UPDATE — обновление

# Один объект
task = Task.objects.get(pk=1)
task.status = 'done'
task.save()

# Много объектов (один SQL UPDATE)
Task.objects.filter(status='todo').update(status='in_progress')

DELETE — удаление

task = Task.objects.get(pk=1)
task.delete()

# Много объектов
Task.objects.filter(status='done').delete()

ORDER BY — сортировка

Task.objects.order_by('title')           # по возрастанию
Task.objects.order_by('-created_at')     # по убыванию
Task.objects.order_by('status', '-priority')  # по нескольким

Цепочки QuerySet

# QuerySet ленивый — SQL выполняется только при итерации
tasks = (
    Task.objects
    .filter(status='todo')
    .exclude(priority=0)
    .order_by('-priority')
    [:10]  # LIMIT 10
)

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

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

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 132
📝

Что такое ORM

ORM (Object-Relational Mapping) — технология, позволяющая работать с базой данных через объекты Python вместо SQL.

📅 30.06.2026 👁️ 131
📝

SQLite в Python: персистентная память для агентов

SQLite — встроенная в Python реляционная база данных. Хранит данные в одном файле, не требует...

📅 30.06.2026 👁️ 84

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!