syncdb 不修改现有表。
syncdb
另请检查您的admin.py文件 Django教程的第二部分 你有硬编码吗?
正如丹尼尔罗斯曼所说, syncdb 不修改现有表。
为此,您需要使用 south http://south.aeracode.org/
south
快速浏览转换现有应用程序的过程 south 。首先,您可以使用安装它 easy_install 通过打字 easy_install South 。如果您希望从Mercurial或快照tar.gz安装它,他们会提供说明 这里 。
easy_install
easy_install South
安装后,您需要转换现有的应用程序 south 。在你的应用程序中 settings.py 文件,添加 south 至 INSTALLED_APPS 然后重新运行 python manage.py syncdb 。所有这一切都是为了添加数据表 south 应用。它还没有对你的模型做任何事情。
settings.py
INSTALLED_APPS
python manage.py syncdb
现在,您要撤消在原始帖子中所做的更改。回到原来的样子。我们将在几分钟内完成这一改变,但首先,我们需要说明 south 您的应用程序是什么样的 现在 。
python manage.py convert_to_south <appname> 更换 <appname> 与您的应用程序的名称。这将为您的应用程序创建初始迁移文件。
python manage.py convert_to_south <appname>
<appname>
将这些更改提交到您的版本控制(或通过您的正常流程将应用程序分发给其他开发人员)。它应该是一个名为的新文件夹 migrations 在您的应用程序目录中您需要提交/分发此文件夹中显示的所有文件。
migrations
的 一次性的事情 强> :安装应用程序的任何地方都需要运行此命令以转换为使用south。 python manage.py migrate <appname> 0001 --fake 根据 文件 ,这是必需的,因为convert_to_south生成的初始迁移将尝试创建所有现有表;相反,你告诉南方它已经应用了 --fake ,因此下一次迁移正确应用。
python manage.py migrate <appname> 0001 --fake
--fake
现在,我们将做出改变。重新编辑模型以进行所需的更改。保存模型。
运行此命令: python manage.py schemamigration <appname> --auto 。 South将分析您的模型及其更改方式并创建迁移脚本。这就是我们需要将您的更改恢复到原始状态的原因。除此以外, south 我不知道从哪里迁移。
python manage.py schemamigration <appname> --auto
完成后,运行 python manage.py migrate <appname> 。再次,提交或分发 migrations 夹。部署的每个位置都需要运行 python manage.py migrate <appname> 。
python manage.py migrate <appname>
将来当您进行架构更改时,您将运行 python manage.py schemamigration <appname> --auto 创建迁移脚本和 python manage.py migrate <appname> 安装更改。
我还建议看一下其他文档的文档 south 能够在迁移期间处理。以上应该可以让你开始。南方的文件是位置 这里 。
如果没有任何效果,请尝试删除模型文件中的模型然后syncdb并尝试使用django evolution之后重置django_evolution然后syncdb再次尝试再次更改模型文件再次执行步骤,我希望这将解决问题,它在我的案例中工作......
以下是步骤:
1将模型文件更改为旧文件。
然后运行syncdb。
./manage.py syncdb
然后运行进化:
./manage.py evolve --hint
执行evolve:
./manage.py evolve --hint -x
重置django evolution:
./manage.py reset django_evolution
运行syncdb:
现在,更改新模型的模型文件并再次运行所有步骤。
我希望这能帮到您。