Exercise 3: Why migrate Runs Before Any Models Exist — Possible Solution ==================================================================== WHY migrate IS NEEDED EVEN WITH NO CUSTOM MODELS YET ------------------------------ Per this chapter, the built-in apps already listed in INSTALLED_APPS (django.contrib.auth, django.contrib.sessions, django.contrib.admin, and the rest) already define their own real database tables - for things like user accounts and session data - the moment the project is created, regardless of whether this course has defined a single model of its own. python manage.py migrate is what actually applies those built-in apps' own table definitions to the database. WHAT HAPPENS IF IT'S SKIPPED ------------------------------ Per this chapter's own tip-box, skipping migrate on a genuinely fresh project is a common source of a confusing first-run error - one that has nothing to do with anything this course will actually build, since it's the built-in apps' own required tables that are missing, not anything related to the content app's future Page model. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly explains that the built-in apps (not this course's own future code) already require real database tables from the start, and correctly identifies migrate as the step that creates those tables, along with the practical consequence of skipping it.