60
задан 27 August 2015 в 10:51

1 ответ

Django обеспечивает --fake-initial опция, которую я нашел эффективным для моего использования. От Документация Django Migration :

- поддельная начальная буква

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

Для моего использования, я только что вытянул проект от управления версиями и готовился добавлять некоторые новые образцовые поля. Я добавил поля, работал ./manage.py makemigrations и затем попытался работать ./manage.py migrate, который бросил ошибку с тех пор, как можно было бы ожидать, многие поля уже существовали в существующей базе данных.

то, Что я должен был сделать, должно было работать makemigrations сразу за получением по запросу проекта от управления версиями для создания снимка состояния существующих моделей. Затем выполнение эти ./manage.py migrate --fake-initial было бы следующим шагом.

После этого можно добавить далеко и makemigrations> migrate как нормальные.

ПРИМЕЧАНИЕ: я не знаю, пропустил ли --fake-initial существующие поля и , добавляют новые. Я решил прокомментировать новые поля, которые я создал до той точки, выполнил --fake-initial, как будто это была первая вещь, которую я сделал после получения по запросу от управления версиями, затем добавленный в обновленных полях в следующей миграции.

Другая связанная документация: https://docs.djangoproject.com/en/dev/topics/migrations/#initial-migrations

3
ответ дан 1 November 2019 в 10:20

Другие вопросы по тегам:

Похожие вопросы: