Короткий ответ Модель Django — это Python-класс, наследующий от django.db.models.Model, где атрибуты класса описывают поля таблицы через классы Field (CharField, IntegerField, ForeignKey и т.д.); если не указано иное, Django автоматически добавляет первичный ключ id (AutoField/BigAutoField). Как это работает подробнее Django использует метаклассы, чтобы на основе объявленных полей сформировать схему таблицы (имя по умолчанию: app_modelname в нижнем регистре) и сгенерировать файл миграции через manage.py makemigrations, который затем применяется через migrate. Пример кода Что использовать на практике Практика. Каждое поле Field транслируется в конкретный тип колонки СУБД (например, CharField(max_length=100) -> varchar(100)); ForeignKey автоматически создаёт колонку с суффиксом _id и соответствующий индекс. Подводные камни Ошибка. Забывают указать on_delete для ForeignKey (обязательный параметр) и выбирают его не задумываясь; не вызывают makemigrations после изменения модели, из-за чего БД расходится с кодом мо