2015-03-10 2 views
3

У меня есть большое приложение Django, которое активно используется пользователями Интернета. Я пытаюсь добавить django-modeltranslation в одно из моих приложений. В разработке все работает в порядке:django-modelstranslation fallback исходное значение поля

  1. Установите django-modeltranslation и выполните соответствующие изменения модели.
  2. Создания миграции Юга для него python manage.py schemamigration myapp --auto
  3. Применить миграцию python manage.py migrate myapp
  4. Run Джанго-modeltranslation management команды для заполнения языка по умолчанию из исходного поля python manage.py update_translation_fields

У меня есть проблема находится между пунктом 3 и 4 Если я запустил миграцию на производство, то переведенная модель не покажет контент пользователю (у меня не может быть простоя), пока я не запустил номер 4, что может занять некоторое время.

Я хотел бы знать, есть ли способ отложить перевод в исходное содержимое поля без перевода. Это относится к другому переводу fallback, и это доступ к исходному полю original. Но мне нужно поле модели по умолчанию для исходного значения поля, если перевод отсутствует.

Спасибо

+0

Спасибо, человек, вы сохранили мне журнал времени с подсказкой на '' 'update_translation_fields'''. –

ответ

1
  1. Clone производственной базы данных в среде промежуточной.
  2. Применить миграцию в стадии постановки.
  3. Проверьте, что все работает в режиме постановки.

  4. Тогда либо:

    а. Направьте сетевую конфигурацию на стадию, настройте производство на досуге и перенастройте сеть обратно (0 простоя).

    b. Обновите производственную среду в реальном времени с помощью необходимых пакетов и скопируйте базу данных из промежуточной среды в производство (минимальное время простоя).

1

Я смог решить эту проблему без необходимости клонирования баз данных. Что я сделал:

  1. Разверните версию с миграцией, но без изменений изменений в конфигурации django-model.
  2. Запустить миграцию. Это добавит несколько полей в переведенную модель, но код все равно укажет на исходное поле.
  3. выполнить команду управления python manage.py update_translation_fields. Это приведет к клонированию исходных значений поля в поле по умолчанию.
  4. Развертывание более новой версии кода с изменениями изменения django-model.
Смежные вопросы