这是一个新手理论问题 - 我刚开始使用Python并研究Django和orm。问题:如果我开发我的对象并通过其他开发修改基础对象结构,继承等 - Django的ORM解决方案会自动修改数据库还是我需要执行转换(如果应用程序是实时的)?
所以,我从一个基本的手机应用程序开始 对象人:姓名,地址,城市,州,邮编,电话 然后我改变了 对象人:标题,姓名,地址,城市,州,邮编,电话对象 对象电话:类型,电话#
我是否通过数据库手动转换并更改代码或ORM中间件是否进行了更改?如果是的话 - 如何?
答案 0 :(得分:5)
从Django 1.02开始(以及最新的subversion版本1.1),没有自动的“模式迁移”。您的选择是删除架构并让Django重新创建它(通过manage.py syncdb),或者自己手动更改架构。
Django架构迁移有一些工具可供使用。 (我正在看South。)
答案 1 :(得分:4)
Django书在本章末尾(或页面底部,网络版)附近的Chapter 5中介绍了这个问题。基本上,规则是:
ALTER TABLE
),然后将字段添加到模型中。 (您可以使用manage.py sqlall
查看要执行的SQL语句。)ALTER TABLE
命令)以及已创建的任何连接表。所以回答你的问题,在Django的情况下,不,ORM将不为你处理修改 - 但它们并不难做到。有关详细信息,请参阅本书的这一章(上面链接)。
答案 2 :(得分:0)
我们在应用程序名称中包含“版本”号。
我们的目录看起来像这样
project
settings.py
appA_1
__init__.py
models.py
tests.py
appB_1
__init__.py
models.py
tests.py
appB_2
__init__.py
models.py
tests.py
这显示了两个版本的appB。 appB_1是原始版本。当我们更改模型时,我们首先复制应用程序以创建appB_2,然后修改该模型。
manage.py syncdb
将创建全新的appB_2。
我们必须通过从appB_1复制到appB_2来卸载和重新加载表格。一次。
然后我们可以从settings.py中删除appB_1。稍后我们可以从数据库中删除这些表。