2014-09-06 5 views
4

Я пытаюсь добавить исходные данные в Django 1.7, и я прочитал, что рекомендуется использовать миграцию данных.Укажите зависимость приложения при миграции

Я правильно создал файл миграции, называемый «0001_groups», в котором я создал несколько групп и разрешений contrib.auth.

Проблема в том, что она выполняется до выполнения миграций auth.

Я пошел, чтобы узнать, что это за имя last migration of the auth app, и это называется 0005_alter_user_last_login_null.py. Так что я попытался с:

dependencies = [ 
    ('auth', '0005_alter_user_last_login_null'), 
] 

, но я получаю:

KeyError: u"Migration appname.0001_groups dependencies references nonexistent parent node ('auth', '0005_alter_user_last_login_null')"

Я гугле эту ошибку, и это всегда ссылки на 11 месяцев Исправлены ошибки Джанго.

Как я могу правильно определить зависимость приложения auth?

+0

Вы пробовали 'django.contrib.auth' вместо' auth' в определении зависимостей? – ChillarAnand

ответ

2

Вы используете 1.7, но смотрят на исходное дерево master. См. this и попробуйте 0001_initial.

+1

Да, я заметил. Я закончил использование '__latest__'. Благодарю. – Shoe

+1

Вы можете использовать '__first__', если' 0001_initial' на самом деле то, что вы хотите. – Rockallite

11

Я узнал, что вы можете ссылаться на последнюю миграцию с __latest__:

dependencies = [ 
    ('auth', '__latest__'), 
] 
+1

В общем, вы не * хотите * ссылаться на последнюю миграцию. Что делать, если у вас есть «ForeignKey» для модели, которая позже удаляется? Ваша миграция сломается. Маловероятно, что это будет иметь стабильный пакет, такой как 'django.contrib.auth', но это все еще плохая практика и ничего не дает вам. –

+0

Совсем не так, как работают миграции. Обратите внимание, что 'makemigrations' создает зависимости от * определенных * миграций, а не' __latest__', а сам исходный код Django ссылается на определенные миграции в своих зависимостях (например [здесь] (https://github.com/django/django/blob /master/django/contrib/flatpages/migrations/0001_initial.py)). Подробнее о проблемах с использованием '__latest__' см. Здесь [https://code.djangoproject.com/ticket/23071]. –

+0

Я предлагаю вам опубликовать новый вопрос вместе с вашим кодом, объясняя возникшую у вас проблему. Здесь недостаточно. Вопрос о пользовательских «Менеджерах» объясняется в [документации] (https://docs.djangoproject.com/en/dev/topics/migrations/#historical-models). Чтобы заставить миграции работать, Django должен иметь версию, * текстовое * представление ваших моделей, а так как «невозможно сериализовать произвольный код Python», это представление не может включать настраиваемые методы или «Менеджеры». –

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

  • Нет связанных вопросов^_^