Урок 15. Practicum 1: Django Models (Library Project)
⚡ Кратко: 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
📚 Что повторить перед изучением
- ← Урок 14: Практикум 4 — Django-проект, приложения, views
- ← Урок 13: Введение в Django — структура проекта, settings.py
- Команды manage.py:
startproject,startapp,runserver - Базовые концепции ORM: таблицы, строки, первичные ключи, внешние ключи
- Python: классы и наследование
🎯 Что изучать дальше
- → Урок 16: Django models углублённо — валидаторы, свойства, Meta
- Django Admin: настройка list_display, search_fields, list_filter
- Django QuerySet API: filter(), exclude(), annotate(), aggregate()
- Django Forms и ModelForm