Django: Воспроизведение миграций в тестовой среде
Основа вопроса
Моя версия разработки постоянно развивается со своей собственной базой данных. Я буду makemigrations
и migrate
множество раз и буду развивать локальную базу данных. Затем я размещаю свои изменения в GIT, как только чувствую, что версия готова для тестовой среды. Я возьму из мастера и начну работать над теми же миграциями для тестовой среды (у нее своя БД).
Выпуск
По мере постоянного развития кода на версии разработки (формы, представления и т.д.) они становятся зависимыми от models.py и структуры базы данных (импорты и использование моделей). Поэтому, когда я пытаюсь makemigrations
на тестовом окружении, то там, где я ссылался на новые модели в forms.py, views.py, будут возникать ошибки зависимости. Например:
>>> python manage.py makemigrations
File "C:\Users\<user>\<project>\<app>\forms.py", line 101, in UpdateCanisterForm
choices=queryset_to_choice(CellModel.objects.all()),
File "C:\Users\<user>\<project>\<app>\forms.py", line 34, in queryset_to_choice
return [(x.id, x.__str__) for x in queryset]
File "C:\Users\<user>\anaconda3\lib\site-packages\django\db\models\query.py", line 287, in __iter__
self._fetch_all()
[...]
django.db.utils.OperationalError: (1054, "Unknown column '<app>.site_id' in 'field list'")
Примечание:
<>
заменено для сохранения конфиденциальности
Текущее решение проблемы
В настоящее время я работаю над тем, чтобы закомментировать все новые поля, на которые ссылаются, пока код не будет доволен своими зависимостями и я смогу мигрировать.
Что я хочу
Я бы очень хотел улучшить этот метод, поэтому я хотел бы знать следующее:
- My migration strategy. Is there a more standardised approach to making migrations to the test environment.
- Can I
makemigrations
/migrate
and get it to ignore certain source files which have dependencies to the models/fields.