2012-09-18 43 views
1

我將orgname = models.CharField(max_length=50)添加到了我的models.py中的一個現有類,我運行了python manage.py syncdb,但發現它不創建列(我使用PostgreSQL)所以我需要做哪些python manage.py sqlall <myapp>我沒有和它輸出的以下內容:Manage.py sqlall <myapp>不會創建列

BEGIN; 
CREATE TABLE "file_uploader_files" (
    "id" serial NOT NULL PRIMARY KEY, 
    "file" varchar(100) NOT NULL, 
    "orgname" varchar(50) NOT NULL 
) 
; 
COMMIT; 

然而,當我進入殼Django的還是看在pgAdmin3,依然沒有創建列。我究竟做錯了什麼?我會手動添加它,但我不知道如何。

P.S.該表已經在手工創建,並且文件varchar,orgname也是在我初始創建該列之後發佈的。

回答

1

也看到這個SO問題:update django database to reflect changes in existing models(前兩個答案涵蓋了你的問題)。

accepted answer

注:執行syncdb無法更新現有的表。有時候不可能自動決定做什麼 - 這就是爲什麼南方腳本非常棒。

而在其他another answer ...

python manage.py reset <your_app> 

這將更新數據庫表爲您的應用程序,但將徹底摧毀這些表中存在的所有數據。

+0

第二種方案奏效,謝謝! – user1086337

2

sqlall command文檔說:

打印爲給定的應用程序名稱(S)的CREATE TABLE和初始數據的SQL語句。

它打印SQL,它不運行任何東西。 Django永遠不會修改你的模式,你需要自己去做 - 上面的輸出可以幫助你顯示orgname字段的類型。或者使用類似南方的東西。

+0

這就是說該列已經在表格中創建(在PgAdmin3中,當我嘗試自己添加列時),但是我找不到它,並且沒有顯示在PgAdmin3中。感謝您的幫助。 – user1086337