2015-04-27 2 views
1

В Django 1.8, используя 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" does not exist

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, прежде чем моя модель пользователя дает ошибку выше ошибки, когда я когда-либо запускать тесты и необходимо создать новую тестовую базу данных.

ответ

2

Какую версию django-oauth-toolkit вы установили? Если вы установили из PyPI, попробуйте установить его из главной ветки в GitHub. Текущая версия PyPI (v0.8) поддерживает только южные миграции, но не встроенные миграции, которые были введены в Django 1.7.

+0

Спасибо за ваш ответ. Я использую версию pip, которая равна 0.8.0, однако версия GitBub также равна 0.8.0 https://github.com/evonove/django-oauth-toolkit/blob/master/oauth2_provider/__init__.py, вы уверены? – Prometheus

+0

Вы правы !!!! Я пробовал версию git repo, и она работала, даже если номера версий одинаковы! Вы знаете, почему это так? – Prometheus

+0

Если вы посмотрите на [коммиты на GitHub] (https://github.com/evonove/django-oauth-toolkit/commits/master), вы заметите, что версия на 27 марта была удалена до 0,8, но что там с тех пор произошло немало изменений. –

Смежные вопросы