Django Migration Helper is a simple app containing commands that make more complicated migrations a lot easier. Use it if you want to perform some structural changes in your code while keeping the data in your database intact.
pip install django-migration-helper
- Add "migration_helper" to your INSTALLED_APPS setting like this::
INSTALLED_APPS = [ ... 'migration_helper', ]
Before using make sure you have applied all your previous migrations! Make sure your database state is neutral. Also, as an extra precaution, you may want to dump your database, just in case. Next, physically move the model between apps and resolve all import dependecies. As a next step you run this command:
python manage.py move_model <model_label> <base_app> <target_app> [**options]
This command creates migration files for an operation of moving a model (given by
<target_app>keeping the data already stored
in database intact and resolving all relative fields using
By default this command only generates migration files. Next step
would be to run
python manage.py migrate.
If you want to do it automatically, running this command
--migrate flag applies the migrations.
Running this with
--dry-run doesn't create migration files,
it just shows what operations would be made in the console.
Great answer from Nostalg.io on stackoverflow here
- Provide some unit tests
- Add more commands