





Обновление. Для меня это было очень просто: заменить __str__() на __unicode__(), написать базовый admin.py и готово. Просто запустите приложение на 1.0, протестируйте его, а при обнаружении ошибки используйте документацию на обратно несовместимые изменения, чтобы узнать, как исправить проблему.
Хотя это зависит от того, что вы делаете, большинство приложений должно иметь возможность просто обновиться, а затем исправить все, что ломается. По моему опыту, основные вещи, которые мне пришлось исправить после обновления, это
Изменения некоторых забавных вещей с моделями, таких как синтаксис следующих внешних ключей.
Небольшой набор изменений в шаблоне, в первую очередь с автоматическим экранированием.
Все, что зависит от конкретной структуры внутреннего устройства Django. Это не должно быть проблемой, если вы не делаете такие вещи, как динамическое изменение внутренних компонентов Django, чтобы изменить их поведение так, как это необходимо / удобно для вашего проекта.
Подводя итог, если вы не делаете много действительно странных и / или сложных вещей, простое обновление должно быть относительно безболезненным и потребовать всего нескольких изменений.
Просто обновите свое приложение. Переход с 0.96 на 1.0 был огромным, но с точки зрения изменений, связанных с обратной несовместимостью, я сомневаюсь, что в вашем приложении их даже 10%.
Я был на стволе до Django 1.0, поэтому переход для меня произошел со временем, но даже тогда единственными важными вещами, которые мне пришлось изменить, были newforms, newforms-admin, ул.ул.ong> () в юникод () и maxlength на max_length.
Большинство других изменений касались новых функций, переписывания бэкэнда или прочего, что, как тот, кто создавал простые веб-сайты, даже не приблизился.
Легко обновлять только самые простые сайты.
Ожидайте настоящей боли, если ваш сайт окажется для не-ASCII части мира (читайте: где-нибудь за пределами США и Великобритании). Самым болезненным изменением в Django было внутреннее переключение со строк байтов на объекты юникода - теперь вам нужно найти все места, где вы используете строки байтов, и изменить их на юникод. Худший случай - это рендеринг шаблона, вы никогда не узнаете, что забыли изменить одну переменную, пока не получите UnicodeError.
Другая примечательная вещь: манипуляторы (старые формы) ушли, и у вас нет другого выхода, кроме как переписать все части с помощью форм (новые формы).
Если это ваш случай и ваш проект больше, чем 2-3 приложения, я бы не хотел обновляться до тех пор, пока это действительно не понадобится.
Мы обновились в многоэтапном процессе, и меня это вполне устраивает. Приложение в вопросе было около 100 000 LoC и выполняло несколько основных бизнес-функций с множеством интерфейсов с унаследованными системами. Мы так работали:
Все это заняло около 6 месяцев, когда мы запускали устаревшую производственную ветку на наших серверах, а другую ветку переносили на 1.0. При этом мы также добавляли функции в производственную ветку.
Финальное слияние было гораздо менее запутанным, чем ожидалось, и заняло около недели на слияние, проверку, тестирование и исправление 4 кодеров. Затем мы развернулись, и около недели нас укусили ранее неожиданные ошибки.
В целом результатом я вполне доволен. Теперь у нас есть гораздо лучшая кодовая база для дальнейшего развития.
Не забудьте изменить админку и формы. Это важно. Админ не сложен. Однако формы могут быть убийственными.