So the step-by-step plan I outlined in my question does work, but instead of deleting rows from the south_migrationhistory
database table, I had to delete rows from the django_migrations
database table.
The command is: DELETE FROM django_migrations WHERE app='my_app'
Once this is done, you will be able to re-run your migrations from scratch.