Как засеять данные сразу после создания таблицы в Django

При выполнении команды makemigrations в Django создаются файлы миграции, которые можно вручную отредактировать перед выполнением команды migrate (я делаю это для изменения порядка столбцов). В ходе этого процесса я создаю справочную таблицу, которую также хочу сразу засеять. Для этого я пишу пользовательскую команду seed_common (чтение из CSV и сохранение в таблице по строке за раз, так как мне нужно выполнить некоторую предварительную обработку каждой строки). Есть ли способ запустить код посева при выполнении команды migrate - даже если это означает, что я должен вручную вызвать ее из файла nnnn_initial.py? Я знаю, что запуск еще одной команды для посева не является большой проблемой, но я просто хочу упростить документацию для создания среды, поэтому хотел бы объединить команды, если это возможно.

Вы можете добавить свой код в файл миграции только следующим образом.

from django.db import migrations

class Migration(migrations.Migration):
    dependencies = [
        ('app_name', '0001_initial.py'),
    ]

    """
     # your existing fields related code which is automatically generated.
    """


    def func_to_read_csv(apps, schema_editor):
        # your code


    

    operations = [
       "automatic migration 1" ,
       "automatic migration 2",
        migrations.RunPython(
            func_to_read_csv
        )
    ]

в массиве операций у вас уже есть код, просто добавьте еще один migrations.RunPython(func_to_read_csv) в этот массив. Ваша функция выполнит свою работу, когда вы сделаете python manage.py migrate

Вернуться на верх