正如丹尼爾羅斯曼提到的,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