Bird
Raised Fist0
Djangoframework~5 mins

Migrations concept and workflow in Django

Choose your learning style10 modes available
Introduction

Migrations help you save and apply changes to your database structure easily. They keep your database and code in sync without manual work.

When you add a new model or change an existing model in your Django app.
When you want to update the database schema after changing fields or relationships.
When you need to share database changes with your team or deploy to a server.
When you want to keep track of database changes over time safely.
When you want to rollback or undo database changes if needed.
Syntax
Django
python manage.py makemigrations
python manage.py migrate

makemigrations creates migration files based on model changes.

migrate applies those changes to the database.

Examples
This command looks at your models and creates new migration files for any changes.
Django
python manage.py makemigrations
This command applies all pending migrations to update your database schema.
Django
python manage.py migrate
This applies migrations up to a specific migration number for an app.
Django
python manage.py migrate appname 0002
This shows which migrations have been applied and which are pending.
Django
python manage.py showmigrations
Sample Program

This example shows a simple model. After creating it, you run migrations commands to create the matching table in the database.

Django
from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)

# After saving this model, run:
# python manage.py makemigrations
# python manage.py migrate

# This creates a table for Book in the database.
OutputSuccess
Important Notes

Always run makemigrations after changing models to create migration files.

Run migrate to apply changes to your database before running your app.

Keep migration files in version control to share changes with your team.

Summary

Migrations keep your database structure in sync with your Django models.

Use makemigrations to create migration files and migrate to apply them.

Migrations help you track, share, and safely update your database schema over time.

Practice

(1/5)
1. What is the main purpose of Django migrations?
easy
A. To keep the database schema synchronized with Django models
B. To create HTML templates automatically
C. To manage user authentication
D. To optimize Django views for speed

Solution

  1. Step 1: Understand what migrations do

    Django migrations track changes in models and update the database schema accordingly.
  2. Step 2: Compare options with this purpose

    Only To keep the database schema synchronized with Django models describes keeping the database schema in sync with models, which is the core purpose of migrations.
  3. Final Answer:

    To keep the database schema synchronized with Django models -> Option A
  4. Quick Check:

    Migrations purpose = sync DB schema [OK]
Hint: Migrations sync models and database structure [OK]
Common Mistakes:
  • Confusing migrations with template or view management
  • Thinking migrations handle user authentication
  • Assuming migrations optimize performance
2. Which command do you run to create new migration files after changing models?
easy
A. python manage.py migrate
B. python manage.py makemigrations
C. python manage.py runserver
D. python manage.py collectstatic

Solution

  1. Step 1: Identify the command for creating migration files

    The command makemigrations generates migration files based on model changes.
  2. Step 2: Differentiate from other commands

    migrate applies migrations, runserver starts the server, and collectstatic collects static files.
  3. Final Answer:

    python manage.py makemigrations -> Option B
  4. Quick Check:

    Create migrations = makemigrations [OK]
Hint: Use makemigrations to create migration files [OK]
Common Mistakes:
  • Using migrate instead of makemigrations to create files
  • Confusing runserver with migration commands
  • Thinking collectstatic manages migrations
3. Given this sequence of commands:
python manage.py makemigrations
python manage.py migrate

What happens after running these commands?
medium
A. The server starts running with updated models
B. Static files are collected and served
C. Migration files are created and then applied to update the database schema
D. The database is reset to initial state

Solution

  1. Step 1: Understand makemigrations effect

    This command creates migration files reflecting model changes but does not apply them yet.
  2. Step 2: Understand migrate effect

    This command applies the created migration files to update the database schema accordingly.
  3. Final Answer:

    Migration files are created and then applied to update the database schema -> Option C
  4. Quick Check:

    makemigrations + migrate = create & apply migrations [OK]
Hint: makemigrations creates files; migrate applies them [OK]
Common Mistakes:
  • Thinking migrate creates migration files
  • Assuming these commands start the server
  • Confusing static file commands with migrations
4. You ran python manage.py migrate but got an error saying a migration file is missing. What is the likely cause?
medium
A. You forgot to run makemigrations to create migration files
B. You ran migrate before starting the server
C. Your models.py file is empty
D. You need to delete the database before migrating

Solution

  1. Step 1: Analyze the error about missing migration files

    This usually means migration files were not created yet for model changes.
  2. Step 2: Identify the missing step

    Running makemigrations generates migration files needed before applying them with migrate.
  3. Final Answer:

    You forgot to run makemigrations to create migration files -> Option A
  4. Quick Check:

    Missing migration files = forgot makemigrations [OK]
Hint: Always run makemigrations before migrate [OK]
Common Mistakes:
  • Thinking migrate creates migration files
  • Assuming server must run before migrate
  • Believing database must be deleted before migrating
5. You added a new field to a model and want to share the changes with your team. What is the correct workflow to update the database and share the changes safely?
hard
A. Delete the database, then run makemigrations and migrate on each machine
B. Run migrate first, then create migration files manually and share them
C. Only update the models.py file and ask team members to restart their servers
D. Run makemigrations, commit migration files to version control, then run migrate on all machines

Solution

  1. Step 1: Create migration files after model changes

    Run makemigrations to generate migration files reflecting the new field.
  2. Step 2: Share migration files and apply them

    Commit migration files to version control so the team can get them, then run migrate on each machine to update the database schema safely.
  3. Final Answer:

    Run makemigrations, commit migration files to version control, then run migrate on all machines -> Option D
  4. Quick Check:

    makemigrations + commit + migrate = safe team update [OK]
Hint: Commit migration files before migrating on other machines [OK]
Common Mistakes:
  • Running migrate before creating migration files
  • Deleting databases unnecessarily
  • Only updating models.py without migrations
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard