【问题标题】:Generally, when does Django model change require South?一般来说,Django 模型更改什么时候需要 South?
【发布时间】:2013-12-20 00:50:08
【问题描述】:

我是 Django 新手。我已完成本教程并正在阅读文档以获取更多信息。当我尝试增加我的理解时,比如说,在新的 Managers 或 ModelForms 中,我很好奇 South 需要什么(甚至只是废弃它并重写应用程序)。

update django database to reflect changes in existing models

上面的链接基本上说任何列更改都是必要的,而下面的链接更多的是我的要求。有人可以在不需要时进行概括(例如:基于现有模型添加新的表单/模型表单?添加管理器?)如果没有对数据库的列进行更改,那么就不需要南?

Does changing a django models related_name attribute require a south migration?

【问题讨论】:

    标签: django django-models django-south


    【解决方案1】:

    有两种类型的南迁移:模式和数据。

    数据迁移用于更改数据库中的数据,而不是数据库的架构。

    架构迁移是您感兴趣的。它们用于跟踪数据库架构的更改,并且应该伴随对导致数据库架构更改的模型的任何更改(创建表、删除表、删除列,更改空约束,例如)

    如果您阅读 django 应用程序的两次连续迁移,可能会发现一些很棒的见解。 在其中的每一个中,您都可以找到应用迁移的代码、还原迁移的代码以及数据库模式的快照。

    附:很容易检查模型中的特定更改是否需要南移。只需为修改后的 django 应用程序运行 schemamigration 并删除新创建的迁移(如果已创建)。由于创建南迁移不同于运行它,因此这是测试和学习的好方法。

    请记住,South 和其他软件一样是一款软件,它确实“支持”错误。

    【讨论】:

      【解决方案2】:

      Related_name 属性更改只会影响您的项目,django 使用它来进行查询。

      像空白 = True/False、null = True/False、symbolic = True/False 等更改需要数据库更改,尽管sym​​metric = True/False 不会触发南更新,但设置肯定会在字段创建时有所不同。

      列更改,例如您帖子中显示的链接,需要更新数据库,这就是 south 做得很好的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-16
        • 2017-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 1970-01-01
        • 2012-09-16
        • 1970-01-01
        相关资源
        最近更新 更多