大型站点在使用Django时如何处理即时模式更改?

大型站点在使用Django时如何处理即时模式更改?,django,Django,我一直在使用south,但我真的很讨厌再次手动迁移数据,即使我对一个类做了一点小小的更新。如果我不使用django,我可以很容易地修改表模式,并在类中进行调整,我很好 我知道大多数人可能会告诉我提前正确地思考模式,但现实地说,有时您需要立即进行更改,我认为使用south并不理想 是否有一些人们使用的高级方法,甚至可能修改Django本身的核心?或者是南方有什么我不只是摸索的地方 我真的很讨厌再次手动迁移数据,即使我对一个类做了一点小小的更新 你能指定什么样的更新吗?如果您的意思是添加新字段或编辑

我一直在使用
south
,但我真的很讨厌再次手动迁移数据,即使我对一个类做了一点小小的更新。如果我不使用django,我可以很容易地修改表模式,并在类中进行调整,我很好

我知道大多数人可能会告诉我提前正确地思考模式,但现实地说,有时您需要立即进行更改,我认为使用
south
并不理想

是否有一些人们使用的高级方法,甚至可能修改Django本身的核心?或者是南方有什么我不只是摸索的地方

我真的很讨厌再次手动迁移数据,即使我对一个类做了一点小小的更新

你能指定什么样的更新吗?如果您的意思是添加新字段或编辑现有字段,那么显然是的。如果您的意思是修改在字段上操作的方法,那么就不需要迁移

我知道大多数人可能会告诉我要提前正确地思考模式

仔细考虑一下肯定会有帮助。经验也有帮助。但很明显,你不能预见一切

但现实地说,有时你需要立即做出改变,我不认为使用南方是理想的选择

老实说,我不相信这个论点。如果可以使用SQL“立即”部署更改,那么我认为也可以使用South部署更改。特别是如果您已经使用Fabric或类似工具实现了部署自动化

此外,我发现很难相信使用生成的脚本执行迁移所花费的时间会明显大于首先编写适当的SQL然后执行它所花费的时间。至少在我的经验中不是这样

一个例外可能是ORM不容易为SQL提供等价物的情况。在这种情况下,您仍然可以通过(南部)迁移脚本执行原始SQL

还是南方有什么我不只是在摸索的地方

我怀疑您不是在摸索有序、版本控制、可逆迁移的想法。纯SQL迁移并不总是设计为可逆的(我知道也有例外)。除非开发商特别注意保持秩序,否则它们是不有序的。我甚至看到有人在生产环境中启动可能会带来麻烦的更新,甚至没有先暂停启动事务,然后放弃SQL,甚至没有记录

我不是在质疑你的技能或对细节的关注;我只是想指出你和南方的脱节

希望这有帮助