2010-10-27 25 views
13

將South添加到現有的Django項目。我將它安裝在開發機器和「生產」服務器上。將South添加到Django項目,開發和生產

我已經做了開發計算機上以下內容,然後:加入南方應用的settings.py,

python manage.py syncdb 
python manage.py convert_to_south myproject.myapp 

然後改變了一些模型,然後

python manage.py schemamigration myproject.myapp --auto 
python manage.py migrate myproject.myapp 

似乎工作至今。我現在不太確定的是在生產服務器上做什麼。只需手動重複所有這些步驟?上傳修改後的settings.py,做syncdb,convert_to_south,上傳修改後的models.py,做schemamigration,遷移?有些不同?教程here說了一些關於向版本控制添加遷移的內容,所以大概他們應該上傳並以某種方式應用到生產服務器上?

此外,現在我在開發計算機上使用sqlite3,在服務器上使用mysql - 它是否使事情與南方有所不同?

+1

南將遷移到使用ORM的代碼中的優點是它使它們成爲後端不可知論的,因此您的遷移將在sqlite,mysql和所有具有後端的數據庫上運行。 – 2012-02-15 08:54:28

回答

4

爲了確保南方遷移表存在,

python manage.py syncdb 

然後

python manage.py migrate myproject.myapp --fake 0001 
python manage.py migrate myproject.myapp 

這就是對我工作。 :)

16

我的導遊說:

  1. 服務器上安裝南方。 import south從shell只是爲了確保你使用的是相同的python env。
  2. 'south'添加到INSTALLED_APPSsettings.py
  3. 上傳settings.py
  4. 重新啓動服務器
  5. python manage.py syncdb
  6. 上傳新產品app/models.py and app/migrations/ dir。
  7. 重新啓動服務器。
  8. python manage.py migrate app --fake 0001
  9. python manage.py migrate app
+0

我認爲這比@AKX更好地回答了問題。人們可以從這樣的問題中得出結論:在將代碼部署到服務器的過程中,這個問題仍然存在。+1(一旦你獲得了足夠的聲譽來編輯,你應該考慮改進原來的答案,而不是編寫一個新的答案。) – 2012-02-15 08:49:26

+2

澄清如果讀者不明白的話:「重啓服務器」並不意味着你必須重新啓動整個服務器或虛擬機。只是反彈網絡服務器。如果您使用的是更新版本的ubuntu + apache,例如「sudo service apache2 reload」就足夠了。 – 2012-06-26 01:13:19