🏗️ Капстоун B — Library / Каталог (Django)

📁 Серия: Капстоун B 🔧 Стек: Django 5.x · django-environ · SQLite 📊 Этапов: 7 шагов
#django5 #orm #admin #inline #n+1 #капстоун

⚡ Кратко: что строим

Library / Каталог — полноценное Django 5 приложение для управления библиотечным каталогом: авторы, книги, жанры, издательства. Богатая Django Admin с inline-формами, actions и оптимизированными ORM-запросами.

  • Стек: Django 5.x · django-environ · SQLite (dev)
  • Результат: рабочая админка с моделями, фильтрами, inline, actions; ORM-запросы без N+1
  • Закрывает: callout-verify из уроков 15 (валидаторы, M2M), 19/24 (ModelAdmin, inline, actions, queryset.update + сигналы), 22 (N+1, select_related/prefetch_related)

Время прохождения: ~4–5 часов (7 этапов по 30–45 минут каждый).

📖 О проекте

Library / Каталог — Django-приложение для управления библиотечным каталогом. Администратор добавляет авторов, книги (с жанрами и издательством), управляет экземплярами через inline-формы прямо из страницы книги. Actions позволяют одним кликом обновить статус нескольких записей.

Серия начинается с создания Django-проекта с нуля и поэтапно строит приложение до уровня реальной production-готовой системы управления данными. Особое внимание — правильной работе с Django ORM: устранение N+1 через select_related / prefetch_related, аннотации и агрегации.

Что закрывает этот капстоун

В ходе основного курса ряд тем был помечен callout-verify — сложные места, требующие практики в реальном проекте. Данная серия закрывает:

Технологический стек

Django 5.x Веб-фреймворк, ORM, Admin, management-команды
django-environ Чтение конфигурации из .env (12-factor app)
SQLite Встроенная БД для разработки (zero config)
Django ORM QuerySet API, select_related, prefetch_related, annotate
Django Admin ModelAdmin, Inline, Actions, кастомизация
Management commands Кастомные команды manage.py, фикстуры

📋 Этапы серии

Каждый этап продолжает проект предыдущего. Проходить строго по порядку.

01

Проект и настройка

Создаём venv, Django-проект командой django-admin startproject, настраиваем settings.py через django-environ, пишем .env.

⏱️ ~30 мин 📄 config/settings.py · manage.py · .env
02

БД, миграции, суперпользователь

Подключаем SQLite, запускаем makemigrations / migrate, создаём суперпользователя, проверяем вход в Django Admin.

⏱️ ~20 мин 📄 db.sqlite3 · миграции
03

Модели и связи

Описываем модели Author, Genre, Publisher, Book, BookCopy: ForeignKey, ManyToMany, OneToOne, Meta, __str__, валидаторы + full_clean().

⏱️ ~45 мин 📄 catalog/models.py · catalog/apps.py
04

ModelAdmin: список и фильтры

Регистрируем модели через @admin.register, настраиваем list_display, search_fields, list_filter, ordering, date_hierarchy.

⏱️ ~35 мин 📄 catalog/admin.py
05

Inline-формы и admin actions

Добавляем TabularInline для BookCopy внутри страницы книги, пишем @admin.action для массового обновления статуса. Разбираем разницу queryset.update() vs сигналы.

⏱️ ~40 мин 📄 catalog/admin.py
06

ORM правильно: N+1 закрыт

Django shell: filter/exclude/Q/F, annotate/aggregate, select_related/prefetch_related — устранение N+1 запросов.

⏱️ ~45 мин 📄 catalog/views.py · Django shell
07

Фикстуры, management-команды, финал

Создаём фикстуры через dumpdata/loaddata, пишем кастомную management-команду import_books, проходим финальный чеклист проекта.

⏱️ ~35 мин 📄 catalog/management/commands/import_books.py · fixtures/

📚 Что понадобится

Необходимые знания и инструменты:

🚀 Как работать с серией

  1. Проходите этапы строго по порядку — каждый продолжает код предыдущего.
  2. Перед каждым этапом: прочитайте секцию «Цель» и «Затрагиваемые файлы».
  3. Над каждым блоком кода указан путь к файлу — не гадайте, куда писать.
  4. После каждого этапа: выполните шаги из раздела «Проверка».
  5. Если что-то пошло не так — секция «Проверка» содержит диагностику.
Важно: Не пропускайте этапы и не меняйте порядок. Структура файлов, которую создаёте на шаге 1, используется на шагах 2, 3 и далее.
Связь с уроками 15, 19, 22, 24: Этот капстоун не переписывает уроки — он их применяет в реальном проекте. Вы увидите, как концепции из уроков складываются в полноценное приложение: модели → миграции → Admin → ORM-оптимизации.