2013-12-23 5 views
5

В настоящее время я не использую миграции в моем проекте Django, но я намереваюсь очень скоро. Я понимаю, что Юг является де-факто инструментом, и я собирался использовать его, но затем я прочитал на сайте проекта Django, что версия для разработки (я предполагаю, что выйдет в качестве версии 1.7) имеет средство перенастройки ядра, которое работает как migrate.Инструмент переноса ядра Django против South для переноса данных Django

Исходя из очень небольшого опыта с использованием инструментов миграции (я установил Django-CMS с Югом и играл с ним в течение дня или около того), что является лучшим для новичков?

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

Наконец, еще один вопрос, если я начну с Юга (большинство моих проектов Django - v1.5), когда я обновляюсь до 1.6, а затем 1.7, будет ли у меня проблема с преобразованием в основной миграции Django?

+0

Связанный вопрос: как обеспечить путь обновления от южных приложений до Django 1.7 миграции http://stackoverflow.com/questions/22597240/upgrade-path-for-re-usable-apps-with-south-and-django -1-7-migrations – stefanfoulis

ответ

3

Его легко переносить историю миграции юга и инициализировать любой другой способ миграции.

Переходы ядра Django основаны на Юге, поэтому я думаю, чтоможно будет экспортировать историю миграции Юга в основные миграции Django.

Поскольку миграции ядра Django еще не выпущены, и ваша цель - учиться, я предлагаю начать с Юга.

+0

Я установил юг и преобразовал свои приложения, и это сработало хорошо. Поскольку я не совсем готов обновить Django, этот план кажется хорошей идеей. Благодарю. – nicorellius

4

С тех пор, как Эндрю Годвин (создатель или перенос Django Core) говорит об этом изменении: «Четырехлетний дизайн Юга поражает серьезные ограничения, пришло время добавить поддержку миграции в сам Django», я не буду делать ставку на возможность экспортировать историю миграции Юга в основные миграции Django.

Вот почему, если можно, я предлагаю вам подождать 20 января: версия Django 1.7 alpha с Core Migration будет выпущена, как вы можете видеть here.

В конце концов, Andrew Godwin worked on South himself, поэтому вы не должны видеть Django Core Migration как новый инструмент, а скорее как South v2.

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

Вот почему я предлагаю ждет немного времени и дает шанс на этот новый инструмент :)

+0

Хорошие баллы +1 ... – nicorellius

3

документация для Django 1.7 обсуждает модернизацию с юга:

If you already have pre-existing migrations created with South 0.x, then the upgrade process to use django.db.migrations is quite simple:

  • Ensure all installs are fully up-to-date with their migrations
  • Delete all your (numbered) migration files, but not the directory or init.py - make sure you remove the .pyc files too.
  • Run python manage.py makemigrations. Django should see the empty migration directories and make new initial migrations in the new format.
  • Run python manage.py migrate. Django will see that the tables for the initial migrations already exist and mark them as applied without running them.

That’s it! The only complication is if you have a circular dependency loop of foreign keys; in this case, makemigrations might make more than one initial migration, and you’ll need to mark them all as applied using:

python manage.py migrate --fake yourappnamehere 

(от here).

+0

> Django увидит, что таблицы для начальных миграций уже существуют и отмечают их как примененные без их запуска. Видимо, не всегда. Я получаю сообщение об ошибке «django.db.utils.OperationalError: table» [table] «уже существует». Запуск migrate app 0001 -fake исправит его. – wes

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