diff --git a/django/db/migrations/loader.py b/django/db/migrations/loader.py index fac33c3ce7..b19c487e9f 100644 --- a/django/db/migrations/loader.py +++ b/django/db/migrations/loader.py @@ -124,6 +124,12 @@ class MigrationLoader(object): app_config.label, ) if south_style_migrations: + if app_config.label in self.migrated_apps: + raise BadMigrationError( + "Migrated app %r contains South migrations. Make sure " + "all numbered South migrations are deleted prior to " + "creating Django migrations." % app_config.label + ) self.unmigrated_apps.add(app_config.label) def get_migration(self, app_label, name_prefix): diff --git a/docs/releases/1.8.6.txt b/docs/releases/1.8.6.txt index 75bd79542b..76eb32902d 100644 --- a/docs/releases/1.8.6.txt +++ b/docs/releases/1.8.6.txt @@ -41,3 +41,6 @@ Bugfixes * Fixed crash with ``contrib.postgres.forms.SplitArrayField`` and ``IntegerField`` on invalid value (:ticket:`25597`). + +* Added a helpful error message when Django and South migrations exist in the + same directory (:ticket:`25618`).