正如 Daniel Roseman 所提到的,syncdb不会修改现有表。
为此,您需要使用south http://south.aeracode.org/
将现有应用程序转换为使用south. 首先,您可以easy_install通过键入来安装它easy_install South。如果您希望从 Mercurial 或快照 tar.gz 安装它,他们在此处提供了说明。
安装后,您需要将现有应用程序转换为使用south. 在应用程序的settings.py文件中,添加south到INSTALLED_APPS然后重新运行python manage.py syncdb. 所有这些都是为south应用程序添加数据表。它还没有对你的模型做任何事情。
现在,您要撤消在原始帖子中所做的更改。回到过去的样子。我们将在几分钟内进行更改,但首先,我们需要说明您的应用程序现在south的样子。
python manage.py convert_to_south <appname>替换<appname>为您的应用程序的名称。这将为您的应用程序创建初始迁移文件。
将这些更改提交到您的版本控制(或通过您的正常流程将应用程序分发给您的其他开发人员)。它应该是migrations在您的应用程序目录中命名的新文件夹。您将需要提交/分发此文件夹中出现的所有文件。
一次性的事情:安装应用程序的任何地方都需要运行此命令以转换为使用 south。python manage.py migrate <appname> 0001 --fake根据文档,这是必需的,因为 convert_to_south 进行的初始迁移将尝试创建所有现有表;相反,您告诉 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迁移期间能够处理的其他内容。以上应该让你开始。South 的文档位于此处。