Version 10 (modified by andrew, 6 years ago) (diff)


South 0.7


This is a major new release of South. A lot of work has been done to the internals, and a few annoying remnants from South's history have finally been eradicated.

Backwards incompatible changes

  • Tests now run with migrations by default, not using syncdb for everything as in 0.6. This is the behaviour most people expect; to turn it off again, set SOUTH_TESTS_MIGRATE to False (migrating everything can be slow).

Major changes

  • The entire migration/dependency engine has been refactored (mostly by Simon Law), and will now be a lot easier to maintain, as well as being nice and quick.
  • The startmigration command (which used to be one massive file) has been removed, and refactored into several new commands:
    • schemamigration, which is very similar to the old startmigration
    • datamigration, which should be used to create new data migrations
  • This version of South fully supports Django 1.2, as well as multi-db functionality (migrate has gained a --database option). Note that multi-db functionality is unavailable if using South 0.7 with earlier versions of Django.
  • Custom fields are no longer parsed if they don't introspect; instead, an error is raised every time. This is because parsing was causing scenarios where migrations sometimes worked; the new solution means they'll always work or fail.
  • You can now set custom migration directories (actually done as Python modules) if you need per-project migrations for an app.
  • South now detects when you're adding a column that needs a default value, and prompts you for it.
  • SQLite now has full, near-bulletproof support for altering columns, deleting columns, and other basic operations SQLite doesn't support natively.
  • Oracle now has alpha support.
  • Migrations files no longer import from appname.models.
  • Migration classes should now inherit from south.v2.SchemaMigration or south.v2.DataMigration. This doesn't do much at the moment, but is designed so we can easily change the migration API in future and keep backwards compatability.

There's also an assorted array of bugfixes; see the milestone status page for details.


This release wouldn't have been possible without:

  • Simon Law, who wrote most of the migration refactor and now knows too much about how our dependencies work
  • Torchbox, who sponsored Andrew's work on the startmigration refactor, the rest of the migration refactor, and a lot of other small things.
  • Ilya Roitburg, who contributed the Oracle database module