Как засеять данные сразу после создания таблицы в 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