You made changes to a model and made migrations, but you’ve realized it wasn’t the right thing to do and would like to revert. How can you do that without making a new migration?
How can you revert the last migration in Django?
You can reverse a migration using the migrate
command with the number of the previous migration.
Let’s say you have an app called recipes
.
You can see a list of all the migrations in the migrations folder or by running the following command:
python manage.py showmigrations recipes
You may have the following migrations in your recipes
app:
0001_initial.py
0002_recipepage.py
0003_recipeindex.py
If you want to undo the 0003_recipeindex
migration, you can do it like so:
python manage.py migrate recipes 0002_recipepage
You can shorten the command by leaving out the full migration name. Just use the migration number:
python manage.py migrate recipes 0002
Make sure that everything is working the way it should, then you can delete 0003_recipeindex.py
.
If you want to reverse all migrations for your app, you can use the name zero
, like so:
python manage.py migrate recipes zero
Keep in mind that certain irreversible operations can make a migration irreversible. If you try to reverse an irreversible migration, you will get an IrreversibleError
.
You can read more about Django migrations on the official documentation.