正如丹尼尔罗斯曼提到的,syncdb
不修改现有的表。
要做到这一点,你需要通过转换现有的应用程序使用south
使用south
http://south.aeracode.org/
一个非常快速步行。首先,您可以使用easy_install
通过键入easy_install South
来安装它。如果您希望从Mercurial或快照tar.gz进行安装,则需提供说明here。
安装完成后,您需要将现有应用程序转换为使用south
。在您的应用程序的settings.py
文件中,将south
添加到INSTALLED_APPS
,然后重新运行python manage.py syncdb
。所有这些都是为south
应用程序添加数据表。它还没有对你的模型做任何事情。
现在,您要撤消您在原始帖子中所做的更改。回到原来的状态。我们将在几分钟内完成此更改,但首先,我们需要告诉south
您的应用程序看起来像现在。
python manage.py convert_to_south <appname>
用您的应用程序的名称替换<appname>
。这将为您的应用程序创建初始迁移文件。
将这些更改提交给您的版本控制(或通过正常流程将应用程序分发给其他开发人员)。它应该是您的应用程序目录中名为migrations
的新文件夹。您需要提交/分发出现在该文件夹中的所有文件。
有一次的事:你的应用程序安装的每个地方都需要运行这个命令来转换为使用南。 python manage.py migrate <appname> 0001 --fake
根据documentation,这是必需的,因为convert_to_south进行的初始迁移将尝试创建所有现有表;相反,您告诉南方它已经应用--fake
,所以下一次迁移正确应用。
现在,我们要做出改变。重新编辑您的模型以进行所需的更改。保存模型。
运行此命令:python manage.py schemamigration <appname> --auto
。 South将分析您的模型以及它们如何更改并创建迁移脚本。这就是为什么我们需要将您的更改恢复到原始状态。否则,south
将不知道它从哪里迁移。
完成后,运行python manage.py migrate <appname>
。再次提交或分发migrations
文件夹。这部署的每个位置都需要运行python manage.py migrate <appname>
。
将来,当您进行架构更改时,您将运行python manage.py schemamigration <appname> --auto
来创建迁移脚本并且python manage.py migrate <appname>
来安装更改。
我还建议看看其他东西的文档south
是能够在迁移过程中处理。上面应该让你开始。南的文档是位置here。
使用[south](http://south.readthedocs.org/en/latest/index.html)进行迁移。 – Matthias
我自己修改了db中的表。 – chuve