这是一个新手理论问题--我刚刚开始使用Python,并且正在研究Django和orm。问:如果我开发我的对象,并通过额外的开发修改基本对象结构,继承等-Django的ORM解决方案是否会自动修改数据库,或者我需要执行转换(如果应用是实时的)?
因此,我从一个基本的phone应用程序对象person开始: name,address,city,state,zip,phone,然后我更改为Object person: title,name,address,city,state,zip,phone对象phone: type,Phone #
我是通过数据库手动转换并更改代码,还是由ORM中间件进行更改?如果是这样的话-怎么做?
发布于 2009-05-19 21:50:01
Django这本书在Chapter 5中介绍了这个问题,在本章的末尾(或网页底部,在网络版中)。基本上,规则是:
ALTER TABLE),然后将该字段添加到模型中。(您可以使用manage.py sqlall查看要执行的SQL语句。)ALTER TABLE命令),任何对字段进行created.因此,回答您的问题,在Django的情况下,不,ORM不会为您处理修改--但它们并不难做到。有关更多信息,请参阅本书的那一章(上面的链接)。
发布于 2009-05-19 23:19:07
从Django 1.02 (subversion中的最新版本1.1 )开始,没有自动的“模式迁移”。您的选择是删除模式并让Django重新创建它(通过manage.py同步数据库),或者手动更改模式。
有一些工具即将用于Django模式迁移。(我正在看South。)
发布于 2009-05-20 01:06:00
我们在应用程序名称中包含一个“版本”号。
我们的目录如下所示
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。稍后,我们可以从数据库中删除这些表。
https://stackoverflow.com/questions/885172
复制相似问题