0
0
DjangoHow-ToBeginner · 3 min read

How to Fake Migration in Django: Simple Steps

To fake a migration in Django, run python manage.py migrate app_name migration_name --fake. This marks the migration as applied in the database without actually running it, useful when the database schema is already up to date.
📐

Syntax

The basic syntax to fake a migration in Django is:

  • python manage.py migrate <app_name> <migration_name> --fake

Here, app_name is the name of your Django app, and migration_name is the specific migration you want to mark as applied. The --fake flag tells Django to record the migration as done without executing it.

bash
python manage.py migrate app_name migration_name --fake
💻

Example

This example shows how to fake the initial migration for an app named blog. Suppose you manually updated the database schema and want Django to recognize the migration as applied.

bash
python manage.py migrate blog 0001_initial --fake
Output
Operations to perform: Apply all migrations: blog Running migrations: Applying blog.0001_initial... FAKED
⚠️

Common Pitfalls

Common mistakes when faking migrations include:

  • Faking a migration that has not been applied to the database schema can cause errors later.
  • Using --fake without specifying a migration name fakes all unapplied migrations, which might be unintended.
  • Not running makemigrations before faking can cause confusion about migration states.

Always ensure the database schema matches the migration before faking.

bash
Wrong way:
python manage.py migrate --fake

Right way:
python manage.py migrate app_name migration_name --fake
📊

Quick Reference

CommandDescription
python manage.py migrate app_name migration_name --fakeMarks a specific migration as applied without running it
python manage.py migrate --fakeFakes all unapplied migrations (use with caution)
python manage.py makemigrationsCreates new migration files based on model changes
python manage.py showmigrationsShows migration status for all apps

Key Takeaways

Use --fake with migrate to mark migrations as applied without running them.
Always ensure your database schema matches the migration before faking.
Specify the migration name to avoid faking unintended migrations.
Run makemigrations before faking to keep migration files updated.
Check migration status with showmigrations to verify applied migrations.