2015-02-12 4 views
0

Я занимаюсь подготовкой приложения Django для его первоначальной производственной версии, и я развернул его экземпляры разработки в нескольких разных средах. Одна вещь, с которой я не могу справиться так гладко, как хотелось бы, - это первоначальная миграция базы данных. Учитывая новую установку Django, развертывание моего приложения из управления версиями и чистую базу данных, manage.py migrate будет обрабатывать начальное создание всех таблиц (как Django, так и моих моделей). Это здорово, но на самом деле это не создает начальные файлы миграции для моих приложений. Это приводит к возникновению проблемы в будущем, когда мне нужно развернуть изменения кода, требующие новой миграции базы данных, поскольку для Django нет оснований для вычисления дельт.Каков правильный способ обработки начальной миграции базы данных в Django?

Я попытался запустить manage.py makemigrations в качестве первого шага развертывания, надеясь, что он создаст файлы миграции, но он сообщает, что никаких изменений для переноса нет. Единственный способ найти базовое состояние, в котором я нуждаюсь, - запустить manage.py makemigrations [appname] для каждого из моих приложений. Должно ли не makemigrations, вызываемое без определенного имени приложения, забрать все установленные приложения и создать их миграцию? Где я иду не так?

ответ

2

Вы ошибаетесь в самом конце - да, вам нужно позвонить manage.py makemigrations <appname> для каждого из ваших приложений один раз. Это не делается автоматически для всех приложений.

Предположительно, это связано с тем, что Django не знает, что именно вы хотите сделать (особенно если некоторые приложения были загружены из PyPI и т. Д.). И одна команда для каждого приложения не может быть очень большой работой, верно?

+0

Спасибо за подтверждение. Перечитывая документы, это выглядит как одна из причин, по которым я столкнулся с этой проблемой: Django намеревается, чтобы миграция контролировалась и распределялась по версиям. Я разработал свое приложение вокруг НЕ этого, но, возможно, мне нужно переосмыслить это. –

+0

«Django намеревается, чтобы миграция контролировалась версиями и распределялась» - Да, это правильно. Именно по этой причине. Вероятно, вам придется переоценить ваш подход. –

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