Создавать миграции командой python manage.py makemigrations вы и так умеете. Если кто не знает эту команду - она создаст файлы миграции при добавлении(или изменении моделей). С миграцией данных будет похожий механизм, давайте его рассмотрим.
Чтоб подготовить файл миграции введите команду:
Где my_module - имя модуля. После этого создастся файл в папке migrations, который отработает как и все остальные миграции.
В него мы добавим методы migrate и reverse_migrate.
Допустим у нас есть модель, под названием IssueType и вам нужно добавить в БД 3 экземпляра этой модели.
Добавим типы в миграции:
ISSUE_TYPES = [ "Ошибка", "Исправление", "Повтор", ]
Метод миграции будет выглядеть так:
def migrate(apps, schema_editor): IssueType = apps.get_model("issues", "IssueType") for type_name in ISSUE_TYPES: IssueType.objects.get_or_create(name=type_name)
Метод отката миграции будет выглядеть так:
def reverse_migrate(apps, schema_editor): IssueType = apps.get_model("issues", "IssueType") IssueType.objects.filter(name__in=ISSUE_TYPES).delete()
И в сам класс Migration добавляем методы миграции в переменную operations
class Migration(migrations.Migration): dependencies = [ ("issues", "0001_initial"), ] operations = [migrations.RunPython(migrate, reverse_migrate)]
Теперь, при применении миграции в БД будут три строчек в таблице модели IssueType