迁移Django灯具?

Ned*_*der 20 migration django fixtures django-south

我有一个Django应用程序.我有包含测试数据的.json fixture文件,单元测试使用数据来确认应用程序是否正常工作.我还使用South来迁移我的数据库.

做了几个数据库迁移后,我的灯具已经过时了,因为数据库已迁移,添加一个新的数据库列,例如,与夹具数据不具有该列,因为它在数据库中更改前被抓获.

在迁移数据库时,移动我的灯具的最佳方法是什么?

Ned*_*der 14

这是我使用的过程:

  1. 首先将代码回滚到创建夹具的修订版.例如:svn up -r12345.

  2. 清空数据库,然后使用 manage.py syncdb --noinput --migrate

  3. 装载夹具 manage.py loaddata my_fixture.json

  4. 将代码转发到现在,用 svn up

  5. 使用迁移数据库 manage.py migrate

  6. 转储数据 manage.py dumpdata --indent=2 myapp >my_fixture.json

请注意,在选择要回滚的过去修订时需要小心.在我的情况下,我有一些最近的修复需要到位,所以我实际上必须选择目录以回滚到特定的修订.单调,但比手动编辑9,000行JSON文件更好.

此外,在步骤6中,请确保转储正确的应用程序集.

在将来,当我编写迁移时,我可以再次执行这些步骤以使所有灯具保持最新状态.

  • 虽然我刚刚开始,但我也处于类似的情况,希望采取测试优先的方法。整个“清空数据库、加载测试夹具、迁移、转储测试夹具”过程将终止工作流程。希望其他人会建议(或代码 ;-) )一个更优雅的解决方案。 (2认同)