在 Django 中运行
makemigrations
命令时,会创建迁移文件,可以在运行 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)
即可。