我是Django的新手。我已经完成了教程,正在阅读文档以获得更多学习。当我尝试添加我的理解时,比如说,在新的Managers或ModelForms中,我很好奇需要什么南方(甚至只是废弃它并重写应用程序)。
update django database to reflect changes in existing models
上面的链接基本上表示任何列都需要更改,而下面的链接更多是我要求的。有人可以在不需要时进行概括(例如:基于现有模型添加新的Form / ModelForm吗?添加管理器?)如果没有对数据库的列进行任何更改,那么South不是必需的吗?
Does changing a django models related_name attribute require a south migration?
答案 0 :(得分:0)
Related_name属性更改仅影响您的项目,django使用它来进行查询。
像blank这样的变化= True / False,null = True / False,symmetrical = True / False需要数据库更改虽然对称= True / False不会触发南方更新,但设置肯定会在创建字段时产生差异。
列更改(如帖子中显示的链接)需要在数据库中进行更新,这就是南方非常有用的。
答案 1 :(得分:0)
南迁移有两种类型:架构和数据。
数据迁移用于更改数据库中的数据,而不是数据库的模式。
模式迁移是您感兴趣的模式。它们用于跟踪数据库模式的更改,并且应该伴随对模型的任何更改,导致数据库模式更改(创建表,删除表,删除列) ,改变null约束,例如)
如果您阅读django应用程序的两次连续迁移,可能会找到一些很好的见解。 在每个代码中,您都可以找到应用迁移的代码,恢复迁移的代码以及数据库模式的快照。
P.S。检查模型中的特定更改是否需要南迁移是非常容易的。只需为修改后的django应用程序运行schemamigration,并删除新创建的迁移(如果已创建)。由于创建南迁移与运行它不同,这是一种测试和学习的好方法。
请记住,南方是一个像任何其他软件一样的软件,它确实“支持”错误。