2011-09-07 54 views
0

我想用Django創建一個新網站。我只是剛剛開始使用網絡開發,但是對於許多零碎和新穎的東西, SQL。更新Django應用程序中的字段問題

我定義了一個帶有各種字段的模型,然後繼續在Django shell中創建它的一個實例。後來我換了幾個字段的名稱,現在當我嘗試做的事情與我的模型像Post.objects.all()我得到的錯誤,如:

DatabaseError: no such column: posts_post.body 

我如何更新數據庫條目(或只是刪除它們),所以我可以繼續與我的網站?

感謝

回答

2

解決方案,有一個名字,South,我用南爲我所有的Django的網站!在習慣之後,它非常有用且易於使用!給它拍攝!

使用南下遷移表中,您將需要運行兩個命令:

首先,創建遷移腳本:

python manage.py schemamigration posts --auto 

沿襲實際應用表更改:

python manage.py migrate posts 
0

你幾乎肯定沒有,因爲加入這一領域的模型運行manage.py syncdb

如果您運行syncdb,然後將該字段添加到模型中,則需要刪除表並使用syncdb重新開始。

另外,安裝南,因爲它爲你做這種模式升級。

+0

我當然確實運行過syn​​cdb。我認爲問題不在於我添加了一個新字段,而是我更改了某些字段的名稱,例如'身體'曾經是'評論'。 – Ferguzz

2

您已將名稱爲「body」的新屬性添加到您的應用程序「帖子」的模型「Post」中。 Django不能自動爲這個新字段創建數據庫列(它只能爲新模型創建數據庫表)。所以你需要手動創建所有的新字段。改變你的表中的數據庫:

ALTER TABLE `posts_post` ADD COLUMN `body` Text; 
+0

我在哪裏運行這些命令?我猜不在python shell中? – Ferguzz

+0

當然不是在python shell中,你使用的是哪個數據庫? sqlite或MySQL?(如果你只是重命名你的領域,那麼查詢必須是「ALTER TABLE'posts_post'CHANGE COLUMN'comment''body' Text;」) –

+0

我正在使用sqlite。如何適當的網站繞過這種事情?他們必須不時重新命名變量等? – Ferguzz

0

manage.py syncdb不處理現有模型,儘管它爲 新模型創建表。對於這個U可以安裝運行以南使用後South 蟒蛇manage.py schemamigration MYAPP --auto(現有車型) 或 蟒蛇manage.py schemamigration MYAPP --initial(新型號) 然後 蟒蛇管理。 PY遷移的myapp

使用南,您將不能創建模型 和南部運行manage.py執行syncdb使得它存儲遷移文件的目錄後

當你下一次安裝的應用程序,你必須運行python manage.py migrate爲數據庫中的模型創建表