Добавить поле в существующее приложение django в производственной среде

У меня есть приложение django, и я хочу добавить поле в модель. Но поскольку веб-сайт уже работает, просто удалить базу данных больше нельзя.

Вот шаги, которые я предпринял:

  • pip install south
  • добавлено "юг" в INSTALLED_APPS
  • python manage.py syncdb
  • python manage.py convert_to_south [myapp]

Итак, теперь у меня начальная миграция, и юг распознает изменения. Затем я добавил поле в свою модель и запустил:

  • python manage.py schemamigration [myapp] --auto
  • python manage.py migrate [myapp]

Теперь у меня следующие миграции:

  • 0001_initial.py
  • 0002_auto__add_field_myapp_fieldname.py

Какие команды мне следует запустить на рабочем сервере сейчас, чтобы выполнить миграцию? Также следует сначала установить юг, а затем вытащить изменения кода и миграции?


person WhatIsName    schedule 08.03.2014    source источник


Ответы (1)


во-первых, подделать начальную миграцию:

python manage.py migrate [yourapp] --fake 0001

тогда вы можете применить миграцию к db

python manage.py migrate [yourapp]


Я предполагаю, что вы запустили convert_to_south в процессе разработки, и в этом случае производственная среда еще не знает о миграциях. convert_to_south автоматически подделывает начальную миграцию за вас! Если бы вы просто запустили migrate в производственной среде без подделки, это должно было произойти с ошибкой.

person dm03514    schedule 08.03.2014