Django工作流程当修改模型频繁?
-
20-08-2019 - |
题
因为我通常不这样做的前设计的,我的型号决项目中,我结束了修改模型很多,并因此删除我的测试数据库每次(因为"syncdb"永远不会改变的表格自动为您)。下面就是我的工作流程和我想听听关于你的。任何想法,欢迎..
- 修改模型。
- 删除测试数据库。(始终是一个简单的源码数据库为我。)
- 运行"syncdb".
- 产生一些测试数据通过代码。
- goto1.
一个次要问题,关于这个..在情况下您的工作是像上面,你如何执行4。步骤?你生成测试数据的手工或者是有一个适当挂钩点在Django应用程序,其中可以注射的试验数据产生的代码,在服务器启动?\
短暂性脑缺血发作。
解决方案
其他提示
这是一份工作Django的具。他们都方便,因为它们的数据库独立和测试用具(和manage.py)已建立支持他们。
使用它们:
- 设置数据中的应用(电话 它"foo")采用管理工具
- 创建一个具目录在您的 "foo"程序的目录
- 类型:
python manage.py dumpdata --indent=4 foo > foo/fixtures/foo.json
现在,在你的syncdb阶段,你只类型:
python manage.py loaddata foo.json
和你的数据,将重新建立。
如果你想让他们在一个测试案例:
class FooTests(TestCase):
fixtures = ['foo.json']
注意,你将不得不重新创建或手工更新,您的装置,如果你的架构剧烈变化。
你可以读取更多关于具django文档 具装
这里是我们做什么。
应用程序是命名一模式版本的编号。
appa_2
,appb_1
, 等等。轻微变化不变的数字。
主要的变化增加数。Syncdb工作。和一个"数据迁移"的剧本可以写的。
def migrate_appa_2_to_3(): for a in appa_2.SomeThing.objects.all(): appa_3.AnotherThing.create( a.this, a.that ) appa_3.NewThing.create( a.another, a.yetAnother ) for b in ...
这一点是,降以及重建并不总是适当的。它有时有帮助的移动数据形式的旧模型的新的模式没有重建,从头开始。
添加以马修的回应,我也经常使用定义SQL提供的初步数据作为记录 在这里,.
Django只是看起来的文件 <app>/sql/<modelname>.sql
并运行它们在创建之后的表期间 syncdb
或 sqlreset
.我使用的定义SQL当我需要做些什么喜欢填充我Django表从其他非Django数据库的数据表。
亲自我发展数据库项目,我的工作现在是相当大,所以我用 dmigrations 以创建数据库迁移脚本以修改数据库(而不是抹出来的数据库;如我在开始时).
编辑:实际上,我利用南方现在:-)