Django 1.8以及如何更改应用程序的迁移顺序

时间:2015-04-27 15:06:12

标签: python django django-models django-nose

在使用Postgres的Django 1.8中,如何更改迁移顺序?我有以下......

AUTH_USER_MODEL = 'users.User'
INSTALLED_APPS = [
    "test.apps.users",
    'django_nose',
    'django_coverage',
    'oauth2_provider',
    'rest_framework',
    'django_extensions',
]

无论我的应用程序在oauth2_provider中的顺序给我错误...

  

django.db.utils.ProgrammingError:relation" users_user"不存在

Operations to perform:
  Synchronize unmigrated apps: oauth2_provider, staticfiles, messages, django_extensions, django_coverage, django_nose, rest_framework, common
  Apply all migrations: users, sessions, admin, auth, contenttypes
Synchronizing apps without migrations:
  Creating tables...
    Creating table oauth2_provider_application
    Creating table oauth2_provider_grant
    Creating table oauth2_provider_accesstoken
    Creating table oauth2_provider_refreshtoken
    Running deferred SQL...

因为它在创建apps.users表之前应用了自己的迁移。

如果我删除了oauth2_provider,请应用迁移,然后在oauth2_provider中重新添​​加,然后再次应用迁移,它就可以了!但是,必须有一种方法可以在test.apps.users或其他任何内容之前强制oauth2_provider迁移。

我注意到他们在oauth2_provider内有:

  

migrations.swappable_dependency(settings.AUTH_USER_MODEL)   https://github.com/evonove/django-oauth-toolkit/blob/master/oauth2_provider/migrations/0001_initial.py#L14

然而,Django只是忽略了这一点,并尝试在我的用户模型之前应用oauth2_provider的迁移,当我运行测试时需要创建一个新的测试数据库时,会出现错误错误。

1 个答案:

答案 0 :(得分:2)

您安装了哪个版本的django-oauth-toolkit?如果您是从PyPI安装的,请尝试从GitHub上的主分支进行安装。 PyPI(v0.8)上的当前版本仅支持South迁移,但不支持Django 1.7中引入的内置迁移。