Урок 15. Practicum 1: Django Models (Library Project)

📁 Блок: Django ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#django #models #orm #migrations #foreignkey #manytomany #практикум

⚡ Кратко: Library Project — 15 практических задач

Практикум по созданию полноценной схемы БД для системы библиотек на Django 5.x. От простой модели Author до сложной системы событий с участниками.

  • Задачи 1–5: модели Author и Book — поля, валидаторы, verbose_name, choices
  • Задачи 6–8: Publisher, Category (ForeignKey), Library (ManyToMany)
  • Задачи 9–11: Member, Posts, Borrow — связи и методы
  • Задачи 12–15: Review (property rating), AuthorDetail (OneToOne), __str__, Event/EventParticipant

Ключевые команды:

  • python manage.py makemigrations — создать файл миграции
  • python manage.py migrate — применить миграции к БД
  • python manage.py shell — интерактивная оболочка Django

Что запомнить: on_delete=models.CASCADE обязателен для ForeignKey. При ManyToMany Django сам создаёт промежуточную таблицу.

Частая ошибка: забыть добавить приложение в INSTALLED_APPS — тогда makemigrations не увидит модели.

📖 О чём этот урок

Это практикум по разработке реальной схемы базы данных для системы библиотек. Вы пройдёте путь от нуля до полноценной модели данных с 10+ связанными таблицами, используя Django ORM и все основные типы связей.

Что практикуем

  • Определение моделей Django (models.Model) — поля, метаданные, строковое представление
  • ForeignKey (один ко многим) — Author→Book, Category→Book, Library→Posts
  • ManyToManyField (многие ко многим) — Library↔Book, Library↔Member
  • OneToOneField (один к одному) — Author↔AuthorDetail
  • Валидаторы полей: MinValueValidator, MaxValueValidator
  • Параметры полей: null, blank, choices, verbose_name, help_text, default
  • Миграции: makemigrations / migrate / sqlmigrate
  • Property-методы на моделях — вычисляемые поля без хранения в БД
  • Регистрация моделей в Django Admin

📚 Что повторить перед изучением

🎯 Что изучать дальше