Sam Hooke

Run Django makemigrations as tox task

The following is an example Windows batch script which runs makemigrations inside a tox virtual environment, then copies the migrations out of the virtual environment into your src directory. This is very useful for making changes to your Django model and generating the migrations on your Windows development machine. It would be straight-forward to convert this to run on Linux too.

REM Ensure the py36 virtualenv present
tox -e py36 --notest

REM Activate the py36 environment
call .tox\py36\Scripts\activate.bat

REM Execute the makemigrations command
REM (Lots of quote escaping going on!)
python -c "from django.core.management import execute_from_command_line; execute_from_command_line([\"\", \"makemigrations\", \"--settings=my_django_app.settings\"])"

REM Copy the migrations from the py36 virtualenv into the src
copy /Y .tox\py36\Lib\site-packages\my_django_app\migrations\* src\my_django_app\migrations\