2015-06-19 78 views
1

我剛剛開始使用Django(1.8),我對如何修改模型感到困惑。將列添加到現有模式

如果我進入並添加一個新的字段到現有的模型,我開始得到「沒有這樣的列」的錯誤。到目前爲止,我剛剛一直在擦拭我的數據庫並重新開始,但這很煩人,是否有這樣的過程?

當我投入生產時會發生什麼?我該如何修改該模式?我在網上看到的所有資源都是針對南方的,我猜想它是內置於此版本的django中的,但仍無法找到任何可靠的信息。

感謝

回答

2

在Django 1.7+沒有必要的。只有south

python manage.py makemigrations 
python manage.py migrate 

如果你從你在Django 1.7-取得現有的應用程序切換,那麼你需要做的一個預階段(我發現)的文件中列出:

python manage.py makemigrations your_app_label 

也可以嘗試這個

class Mymodel(models.Model): 
    myfiled = models.CharField() 
    # ... 

    class Meta: 
     managed = True 
+0

當我運行它時,它告訴我沒有檢測到更改。 – browskie

+0

將您的應用添加到'INSTALLED_APPS'中? – itzMEonTV

+0

是的,這是我已經研究了一個星期左右的事情,所以不是一個新項目。但是每次我添加一列時,我都會遇到這個問題。 – browskie

0

你可以寫你自己的sql命令來添加缺少的列給你的錯誤。 第一次運行:

python manage.py makemigrations --empty yourappname 

,那麼你可以去你的應用程序,並找到具有類似於下面的代碼的代碼新生成的遷移文件 。

我不確定你想添加的列的類型,但在operations裏面的代碼中,你把你的sql命令。在我的例子中,我只是添加了字符變化字段。

class Migration(migrations.Migration): 

    dependencies = [ 
     ('app_name', '0002_auto_20150619_2439'), 
    ] 

    operations = [ 
     migrations.RunSQL('ALTER TABLE mytable ADD COLUMN mycolumn character varying(50) NOT NULL') 
    ] 

我希望這會有所幫助。