15
votes

Django 1.7 has built-in database migration mechanizm. However, I'd like to run South migrations for the ols third-party django apps.

I failed to to 'syncdb' management command with Django 1.7 in order to create South models:

/south/management/commands/syncdb.py", line 82, in handle_noargs
old_app_store, cache.app_store = cache.app_store, SortedDict([

AttributeError: 'Apps' object has no attribute 'app_store'
3
Created south_migrationhistory table with Django 1.6Daria
Now getting this error on syncdb: /south/hacks/django_1_0.py", line 68, in clear_app_cache self.old_app_models, cache.app_models = cache.app_models, {} AttributeError: 'Apps' object has no attribute 'app_models'Daria
Any resolution to this? Mysterious.shacker

3 Answers

11
votes

If you started a project on Django 1.6 but have upgraded to Django 1.7, you may not see this error immediately. But if you then do a fresh checkout and db build for the project, this mysterious error will crop up.

The solution is to remove South from your INSTALLED_APPS (and likely pip's requirements.txt as well). You don't need them anymore.

10
votes

On official South site:

South will not work with Django 1.7; it supports only versions 1.4, 1.5 and 1.6.

The only solution I can see is to create django 1.7 for third-party applications within your project using MIGRATION_MODULES setting. When these third-party applications will supply django 1.7 migrations. you should remove your migrations and do migrate --fake with application migrations.

2
votes

https://docs.djangoproject.com/en/1.7/topics/migrations/#upgrading-from-south

This is part of the stable 1.7 release. You should utilise this process if you're upgrading from 1.6 to 1.7