2011-11-21 41 views

回答

6

數據如果您只是想添加一個新的模型,你可以使用manage.py syncdb了點。不幸的是,如果您更改了模型,則默認的Django命令無法爲您完成。

爲了改變你的模型與你現有的數據,你將不得不告訴Django和數據庫如何將你的數據從舊錶遷移到新的。執行此操作的工具稱爲South。上有一個很好的起點教程可以在這裏找到:

http://south.aeracode.org/docs/tutorial/index.html

3

我做出這種類似這樣的變化:

與新列更改模型。

class Book(models.Model): 
    title = models.CharField(maxlength=100) 
    authors = models.ManyToManyField(Author) 
    publisher = models.ForeignKey(Publisher) 
    newColumn = models.DateField() 

顯示新的create table命令:蟒蛇manage.py sqlall

blah blah 
CREATE TABLE "books_book" (
    "id" serial NOT NULL PRIMARY KEY, 
    "title" varchar(100) NOT NULL, 
    "publisher_id" integer NOT NULL REFERENCES "books_publisher" ("id"), 
    "newColumn" date NOT NULL 
); 

我手動更改了表中的數據庫:

mysql -u xxx -p dbxxx 
alter table ttttt add column "newColumn" date NULL; (*1) 

(* 1)應當由空或者您必須通知默認值

請記住創建索引和其他約束(如果需要的話)。

就是這樣。

0

除了danihp的答案,如果你有大的項目,你可以使用

python manage.py sql <app_name> 

所以你的情況:

python manage.py sql polls 

這樣,你得到的只是「投票」 SQL子句。

相關問題