2009-07-22 28 views
1

最近我一直在努力學習在Django Web開發,我很高興的......Django爲什麼不「真的」支持自動錶更新?

但是,有一兩件事是真的很煩 - 特別是當你背後的Django「簡於形」理念的想法。

這就是說,更新django中的表格與我剛剛經歷的真正遠非簡單。

例如,就像我的真實情況一樣,我跳過在開始時爲條目標題添加了一個slug字段。但過了一段時間,我想在表格中添加一個slug列,就像每個人一樣 - django中的新手可能會期望,我試過python manage.py syncdb命令。當然,它不工作...經過一番搜索後,我發現「我需要在dbshel​​l命令行中手動添加一個新列」(我使用的數據庫是mysql)。

我不知道爲什麼,但我認爲這是在我看到了如何創建簡單的在Django一個網站,我從來沒有想到一個非常有趣的事情。難道你們都這麼認爲?或者如果您有任何其他解決方案或任何其他解決方案,請分享一下嗎?

在此先感謝...

PS。我不介意與外殼分貝相處,但我想知道的只是爲什麼它是這樣的Django中...

回答

0

他們說得那麼,你可以快速輕鬆地創建具有最小數據庫努力。不幸的是,他們並沒有讓它更容易更新表格,你必須手動執行ALTER TABLE。我認爲他們可能正在努力解決這個Django 1.1,但我不完全確定。

3

我用South,以幫助制止這樣的問題(雖然它似乎有重新命名字段的問題)。

我覺得不同的數據庫後端的是Django支持,並根據these發行說明有在Django 1.1RC

6

數據庫遷移沒有變化是Django項目目標,這種行爲可能是由於,但它是一個足夠困難的話題,它並沒有在前幾個版本中出現。爲填補這一空白,出現了一些遷移項目,每個項目都以不同的方式解決了難題。與其試圖創建額外的遷移解決方案,或者在任何成熟之前祝福具有「官方」身份的人,或者至少成爲單一首選解決方案,django團隊決定讓這些解決方案演變並從作物中挑選一個在稍後的日期與django一起發貨。

至於那些第三方遷移工具的詳細信息,看看答案this question.

1

以上幾個答案都好信息。但是,根據這個問題,聽起來好像提問者可能沒有在manage.py中使用reset命令。在開發過程中,當您構建模型和數據時,您可能沒有需要持續的數據。種子數據可以存儲爲initial_data(http://docs.djangoproject.com/en/dev/howto/initial-data/),並且可以在重置和同步數據庫時自動或手動添加。

在開發過程中保持各套可以加載數據和自由使用復位命令在manage.py的關鍵是不斷髮展的模式工作。但是,一旦您投入生產,遷移工具(或手動數據庫調整)就變得至關重要。

1

South實際上處理Django遷移相當好。有很好的文檔很容易在website上找到。

相關問題