Search code examples
databasedjangomigrationdjango-appsdjango-south

Django South: Creating schemamigration for more than one app


I'M using django south on a bigger project, the only thing I don't like about it, that you can't create schemamigrations for all of your apps at once (I have a lot of apps that inherit from the same abstract model, if I change that base model there are alot of apps to migrate) - thought you can actually migrate all of them at once (using migrate --all).

So I'd like to know if theres an easy solution for django south to handle a bunch of apps at once or if anyone has a nice script ready for doing that?


Solution

  • First thing: separate applications should limit model interactions

    now that it's said, let's embrace the constraint. No south cannot create a single migration file for many apps and I don't know how to generate many migrations for many app in a single manage.py command.

    All that is left to you is a script now. You could use the amazing fabric http://docs.fabfile.org/ to have a single command to generate your migrations :

    APPS_TO_WATCH = ['myapp','myotherapp','toomanyapps']
    def migration():
        for app in APPS_TO_WATCH:
            local('python manage.py schemamigration %s --auto' % app)
    

    and then call it using fab migration