当前位置:  开发笔记 > 编程语言 > 正文

经常修改模型时的Django工作流程?

如何解决《经常修改模型时的Django工作流程?》经验,为你挑选了4个好方法。

因为我通常不在Django项目中进行模型的预先设计,所以我最终修改了模型,因此每次都删除我的测试数据库(因为"syncdb"不会自动为你更改表格).下面是我的工作流程,我想听听你的.欢迎任何想法..

    修改模型.

    删除测试数据库.(对我来说,总是一个简单的sqlite数据库.)

    运行"syncdb".

    通过代码生成一些测试数据.

    转到1.

关于这个的第二个问题..如果您的工作流程如上所述,您如何执行4.步骤?您是手动生成测试数据还是在Django应用程序中有适当的挂钩点,您可以在服务器启动时注入测试数据生成代码?

TIA.



1> Harper Shelb..:

步骤2和3可以一步完成:

manage.py reset appname

根据我的理解,使用灯具最容易管理第4步



2> Matthew Chri..:

这是Django固定装置的工作.它们很方便,因为它们与数据库无关,并且测试工具(和manage.py)具有内置的支持.

要使用它们:

    使用管理工具在您的应用中设置您的数据(称之为"foo")

    在"foo"app目录中创建一个fixtures目录

    类型: 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文档中阅读有关夹具加载的更多有关夹具的信息


不要忘记`manage.py dumpdata app> app.json`来备份你拥有的东西

3> S.Lott..:

这就是我们的工作.

    应用程序以Schema版本号命名. 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 ...
    

关键是drop和recreate并不总是合适的.将数据从旧模型移动到新模型有时很有帮助,无需从头开始重建.



4> Antonius Com..:

南是最酷的.

虽然数据无关紧要,但良好的重置效果最佳.

http://south.aeracode.org/

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有