我有一个文件,其中包含多个项目之间的一组数据。需要将数据加载到Django数据库中。文件没有那么大的改变,所以在服务器启动时加载一次就足够了。由于文件是在多个项目之间共享的,因此我无法完全控制格式,因此无法将其转换为夹具或其他内容。
我尝试在ready()中加载它,但是在创建新数据库或迁移现有数据库时遇到了问题,因为在迁移完成之前显然已经调用了ready(),并且我使用模型做错了没有基础表。我试图在class_prepared信号处理程序中设置它,但加载过程使用多个模型,所以我不能确定所有必需的模型类都已准备好。此外,似乎在运行测试时未调用ready(),因此单元测试失败,因为数据丢失。做这样的事情的合适地点是什么?
答案 0 :(得分:1)
似乎我所寻找的东西不存在。 Django信任用户处理迁移等,并且不会在加载时检查数据库。因此系统中没有位置可以在系统启动时加载一些数据,并确保您可以实际加载它。我最终做的是在ready()中加载数据,但首先通过在try中执行MyModel.objects.exist()来进行健全性检查:除了:阻止并返回(如果有异常)。这不是理想的,但我没有找到任何其他方式。