Задача

Необходимо разработать набор моделей для Django-приложения, определить сущности, их поля и взаимосвязи. Для каждой модели указать подходящие типы полей (CharField, IntegerField, ForeignKey и др.), настроить ограничения (уникальность, возможность пустых значений и т.д.), а также определить методы __str__. После написания классов моделей требуется создать и применить миграции. Дополнительно - протестировать созданные модели в командной оболочке Django (shell).

Основные требования

  • Определить не менее 2-3 связанных сущностей (например, Пользователь, Проект, Задача).
  • Для каждой модели задать осмысленные имена полей, соответствующие задаче.
  • Использовать внешние ключи (ForeignKey), а при необходимости - связи ManyToMany и OneToOne.
  • Настроить параметры: unique=True, null=True, blank=True по необходимости.
  • Реализовать метод __str__ для человекочитаемого отображения объектов.
  • Создать миграции и применить их к базе данных.
  • По желанию: написать простые тесты или проверить работу моделей в shell (создание, запросы, фильтрация).

Технические детали

  • Фреймворк: Django (любой актуальной версии).
  • База данных: по умолчанию SQLite, можно указать другую (PostgreSQL/MySQL), если требуется в задании заказчика.
  • Код должен быть оформлен в соответствии с PEP 8.
  • Комментарии не обязательны, но приветствуются для пояснения логики.

Что должно быть на выходе

Готовые файлы models.py с реализованными классами, файлы миграций (папка migrations) и, опционально, результаты тестирования или код из shell-сессии.