当一个项目部署时,有些初始数据要在运行前初始化到数据库,这就涉及到数据初始化,如何将基础数据自动添加到数据表中,以下有几种方法:
1.使用 python manage.py loaddata 文件名.xxx 命令实现;
在app下创建fixtures文件夹,再创建初始化文件 initial_data.json/xml/yaml,三种格式均可。
编写初始化文件
initial_data.json
[
{
"model": "auth.Menu",
"pk": 1,
"fields": {
"title": "组织管理"
}
}
]
//pk:表示主键,并不单指id;model指对应的模型名称
initial_data.yaml
- model: auth.Menu
pk: 1
fields:
"title": "组织管理"
- model: auth.Menu2
pk: 2
fields:
"title": "部门管理"
文件创建好之后,使用命令将数据加载到数据表中(执行命令时,会在所有app的下寻找fixtures文件夹下寻找initial_data文件,进行初始化)
python manage.py loaddata initial_data.json
python manage.py loaddata initial_data.yaml
2.使用post_syncdb/post_migrate信号
亲测没成功,原因还没找到。。。。待续。。