Django migrations track and apply database schema changes.
1# Create migrations after model changes2python manage.py makemigrations34# Apply all pending migrations5python manage.py migrate67# Show migration status8python manage.py showmigrations910# Rollback to specific migration11python manage.py migrate app_name 00031213# Create migration with custom SQL14python manage.py makemigrations --empty app_name
Migration file:
1# 0001_initial.py2from django.db import migrations, models34class Migration(migrations.Migration):5 initial = True67 dependencies = [8 ("auth", "0012_alter_user_first_name_max_length"),9 ]1011 operations = [12 migrations.CreateModel(13 name="Article",14 fields=[15 ("id", models.AutoField(primary_key=True)),16 ("title", models.CharField(max_length=200)),17 ("content", models.TextField()),18 ],19 ),20 ]
Best practices:
squashmigrations to clean up history.