2011-02-16 11 views
17

我很想知道在項目的重大初始開發過程中使用(django)South的優勢。爲什麼在最初的開發過程中使用South?

在發展的早期階段,通常有快速的模式轉變,頻繁的分支與合併(特別是如果你使用像git的流動發展戰略)和很少,如果有的話,存儲的數據。爲什麼要保留這些初始模型更改?有什麼優點/缺點?

我激活南亞和執行初始遷移之前的印象,它更容易等到發展平息下來,(你有你真正需要保留的數據)下。有可能這樣做嗎?你想這樣做嗎?

+0

我同意。這就是爲什麼我認爲Django在覈心中需要一些集成的模式更改功能,因爲它現在非常令人沮喪。 – 2011-02-16 21:02:56

+0

@meder你如何在沒有遷移系統的情況下提出這樣的建議?在我看來,南方填補了空白。 – Kekoa 2011-02-16 23:28:51

回答

16

一旦我要推送其他人需要使用的提交,我將創建一個遷移,以便他們仍然可以擁有工作副本。

如果你是獨自工作(而不是擔心部署),這不是一個問題,你可以等到最後一刻,以創建一個遷移。

一旦你開始與他人合作,它使生活更輕鬆,迅速作出遷移,使其成爲一個工作流程習慣,每個人都在同一個數據庫頁面上。

此外,如果您只是修改字段,syncdb不是一個選項。爲了添加,刪除或修改字段,它不得不放棄一個表格,令人難以置信的煩惱。

如果我有一堆我添加的架構遷移的,有時候我會結合他們(回滾和刪除,並創建一個新的巨型遷移)到一個單一的遷移。但通常情況下,遷移次數並不會影響我,因爲它們確實不會讓我付出任何代價。

2

我在最初的開發過程中沒有使用South。我只有a script可爲每個應用程序創建固件,因此當模式更改時,我會轉儲舊的測試數據,編輯模式,更新測試數據以便它可以與新模式一起工作,然後恢復數據。

0

從某個階段開始使用南方並進行初始遷移是絕對有可能的。 SOuth docs在這裏:http://south.aeracode.org/docs/tutorial/part1.html#converting-existing-apps

我在開發過程中使用南方,因爲我經常有數據,我用來測試用戶界面或這樣的事情。如果您在每次模型更改後都沒有從一個完整的新數據庫開始,那麼South在保持數據庫一致方面也非常有幫助。因此,我也同意這個問題,如果Django能夠實現這種模式遷移,那將是非常好的,另一方面,這並不重要,因爲南方很容易實現。

4

我發現南部在開發過程中和之後一樣有用,正是因爲表格字段經常發生變化。這是非常煩人的,必須刪除一個表並使用syncdb重新創建它,只需添加一個字段,特別是如果您有任何測試數據的話。 (您也可以直接在DBMS中修改表,但是必須小心使用Django期望的相同字段類型,適當設置ON DELETE等屬性)。此外,如果其他人正在處理項目,則必須確保告訴他們對其數據庫副本進行完全相同的更改。南方使它更簡單,國際海事組織。

話雖這麼說,這可能是冷靜,如果南方有一個選項,刪除所有先前的遷移,所以你可以用,當你結束了最初的開發,並開始添加真實數據改過自新。但最終那些十多個額外的遷移文件並不會真的讓你付出任何代價。

相關問題