Как вы можете перенести модели Django, аналогичные миграции Ruby on Rails?

У Django есть несколько проектов с открытым исходным кодом, которые решают одну из наиболее заметных недостающих функций фреймворка: модель " эволюция ». Ruby on Rails имеет встроенную поддержку для миграций, но мне любопытно, может ли кто-нибудь рекомендовать один из следующих проектов "эволюции" Django:


person Huuuze    schedule 12.05.2009    source источник
comment
Отличный вопрос !! Я также надеюсь использовать что-то вроде миграции с Django.   -  person NathanD    schedule 12.05.2009
comment
Также см. Этот вопрос: stackoverflow.com/questions/426378/, хотя избранный ответ - миграция, которая имеет проблемы.   -  person Van Gale    schedule 13.05.2009


Ответы (4)


На юге больше всего пара. dmigrations - это слишком элементарно ИМО. django-evolution кричит, если вы когда-нибудь прикоснетесь к базе данных вне ее.

Юг - безусловно, самый сильный соперник. Благодаря замораживанию модели и автоматическим миграциям она прошла долгий путь.

person tmc    schedule 12.05.2009
comment
Южный меня впечатлил, но и django-evolution тоже выглядело интересно. Если в ближайшие пару часов не будет больше ответов, я выберу этот. - person Huuuze; 12.05.2009
comment
Если вы используете инструмент эволюции, вам не следует трогать БД за его пределами, поэтому я не вижу в этом особого аргумента. - person Carl Meyer; 12.05.2009

South и django-evolution, безусловно, лучшие варианты. По моему опыту, замораживание модели и авто-хинтинг в South все еще довольно хрупкие (хинтинг django-evolution намного надежнее в крайних случаях), но развитие django-evolution, похоже, в основном застопорилось с прошлого лета. Если бы я начинал сейчас, я бы, наверное, выбрал Юг, в основном по этой причине.

person Carl Meyer    schedule 12.05.2009

Прочитав это, я перешел от «ничего не зная об эволюции модели данных» к «использованию юга для управления миграцией модели» менее чем за 1 час. Документация Юга великолепна, и я ознакомился с ней в рекордно короткие сроки. Не смотря на другие упомянутые инструменты, я полностью рекомендую его.

Обновление: с момента публикации этого ответа около месяца назад я просмотрел несколько моделей данных, от простого переименования полей до полной замены некоторых таблиц новыми. South не может делать все полностью автоматически (например, переименование выглядит как удаление и добавление), но документация легко проведет вас через ручные шаги.

Я внесу юг в любой будущий проект. Фантастический инструмент!

person ssc    schedule 13.12.2009

Я являюсь членом команды, которая разработала миграцию, но я искренне рекомендую Юг. Он намного более зрелый, находится в активной разработке и имеет некоторые убийственные функции, такие как замораживание ORM (если вы попытаетесь использовать код ORM в миграции, а затем измените свои модели, вас ждет мир боли).

person Daniel Roseman    schedule 12.05.2009