当我运行" python manage.py syncdb"我想要不是空的DB,而是我想要的数据。如果在Django中有一个钩子来运行一些foo.save()行吗?
答案 0 :(得分:1)
来自Django docs about fixtures:
使用灯具提供初始数据
fixture是Django知道如何导入数据库的数据集合。如果您已经获得了一些数据,那么创建夹具的最直接方法是使用manage.py dumpdata命令。或者,你可以手工编写灯具; fixtures可以写成JSON,XML或YAML(安装了PyYAML)文档。序列化文档包含有关每种支持的序列化格式的更多详细信息。
在版本1.7之前,Django有一种自动加载灯具的机制:
如果您创建名为initial_data。[xml / yaml / json]的夹具,则每次运行迁移时都会加载该夹具。这非常方便,但要小心:请记住,每次运行迁移时都会刷新数据。所以不要将initial_data用于您想要编辑的数据。
如果您使用的是Django> = 1.7,则必须发出loaddata
manage命令或创建迁移:
如果应用程序使用迁移,则不会自动加载灯具。由于Django 2.0中的应用程序将需要迁移,因此不推荐使用此行为。如果您要加载应用的初始数据,请考虑在数据migration中执行此操作。
用于阻塞大输入的JSON序列化程序(试图将所有内容加载到内存或类似内容中); XML序列化器用于更好地处理大型灯具。
答案 1 :(得分:0)
假设您使用的是Django 1.7,您可以编写data migration来插入所需的任何数据。
答案 2 :(得分:0)
有whole django docs page about it。
简而言之,您有三种选择:
此外,每次运行migrate
时都可以加载初始数据:
如果您创建名为initial_data。[xml / yaml / json]的夹具,则每次运行迁移时都会加载该夹具。这非常方便,但要小心:请记住,每次运行迁移时都会刷新数据。所以不要将initial_data用于您想要编辑的数据。