2014-11-05 3 views
4

У меня есть существующий проект Django в версии 1.5, и теперь я обновил его до нового Django 1.7.Django Миграции от версии 1.5 до 1.7

Моя главная забота о миграции.

Я сделал следующие шаги для преобразования моего проекта в Django 1.7.

  1. переехал старые южные миграции в папку south_migrations
  2. удален "юг" от установленных приложений
  3. побежал ./manage.py makemigrations
  4. побежал ./manage.py migrate

Является ли это правильный подход?

У меня есть другой выпуск. Когда я бегу ./manage.py runserver это дает предупреждения, как это:

ПОДСКАЗКА: Джанго 1,6 изменено значение по умолчанию BooleanField от Ложные Нет. См. https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield для получения дополнительной информации. sqls.Sql.updates: (1_6.W002) BooleanField не имеет значения по умолчанию.

Как это исправить? Я просто поместил значение по умолчанию для BooleanField, затем побежал makemigrations и migrate. Это достаточно или мне нужно сделать что-то еще?

ответ

3

Моя главная забота о миграции. Это правильный подход?

Да. Если все ваши развертывания обновлены (то есть нет южных миграций, которые не были применены), вы можете просто удалить южные миграции и удалить Юг с INSTALLED_APPS. С точки зрения Джанго вы принимаете существующее приложение и преобразование его использовать миграцию, простой случай, описанный в the documentation:

Если ваше приложение уже есть модели и таблица базы данных, а не миграции еще (например, вы создали его против предыдущей версии Django), вам нужно будет преобразовать его для использования миграции; это простой процесс:

$ питона manage.py makemigrations your_app_label

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

Как я могу исправить эти предупреждения BooleanField?

(Обратите внимание, что это предупреждение больше не существует, как в Django 1.8.)

Эти предупреждения относятся к обратной совместимости изменения в Django, что может повлиять на вас. Но, вероятно, нет.Это повлияет только на то, что ваш код не указал значение по умолчанию для BooleanField, но все же ожидал, что он будет использовать значение по умолчанию False. Вы должны посмотреть все BooleanFields во всех своих приложениях и решить, действительно ли это так.

Если нет, вы можете просто отключить предупреждение, используя настройку SILENCED_SYSTEM_CHECKS.

Если код действительно полагается на этом неявном значение по умолчанию, а затем, после преобразования приложения, чтобы использовать миграции, вы должны добавить default=False явно и создать миграцию. (Конечно, вы все равно можете это делать везде, но лучше не определять значение по умолчанию, если вам действительно не нужно его использовать.)

+0

Эта проверка уже удалена в ветке разработки: https: // code.djangoproject.com/ticket/23765. –

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