Миграция данных в Django: Таблица не существует
Я столкнулся с проблемой, описанной здесь:
Django: Предоставление начальной группы с миграциями
В частности, я работаю над старым кодом, который инициализировал таблицу 'Countries' из файла init_data. Теперь мне нужно добавить страны (например, Южный Судан). Насколько я понимаю, я должен использовать миграции для добавления этих данных, чтобы база данных prod и тестовые машины были синхронизированы. Вот моя попытка миграции:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations
def forwards_func(apps, schema_editor):
Country = apps.get_model('countries', 'Country')
db_alias = schema_editor.connection.alias
Country.objects.using(db_alias).update_or_create(iso='SS', defaults={'name': 'SOUTH SUDAN', 'printable_name': 'South Sudan', 'iso3': 'SSD', 'numcode': 728})
def reverse_func(apps, schema_editor):
pass
class Migration(migrations.Migration):
dependencies = [
('countries', '__latest__'),
]
operations = [
migrations.RunPython(forwards_func, reverse_func)
]
Новая миграция работает на существующей базе данных, но когда тестовый конвейер запускает свежую машину, происходит сбой с сообщением django.db.utils.ProgrammingError: (1146, "Table 'test_cc_dev.country' doesn't exist")
Из приведенной выше ссылки я понял, что проблема связана с тем, что все миграции должны выполняться как группа. Я не понимаю решения. Я должен снова добавить всю таблицу в эту миграцию?
Исходные данные были загружены в файл 0001_initial.py следующим образом:
def forwards_func(apps, schema_editor):
call_command('loaddata', 'countries/fixtures/init_data')