2013-09-23 113 views
0

我已經在應用程序中定義了一些模型,稱之爲「博客」。Django(南):更改模型應用程序

djangoproject 
    /blog 
     models.py 

我現在想改變模型的位置,例如把它們放在這裏:

djangoproject 
    /blog 
     xxx 
    /all_models 
     models.py 

但從代碼來看,這是非常容易的,但我想會有問題上由於Django和South創建的所有表格現在都被稱爲blog_postsblog_comments,因此Django依賴於此命名約定,並且我不想丟失數據庫中已存在的數據。

如何做到這一點?

回答

4

最簡單的事情是不要打擾改變表格,但代碼。在每個模型的Meta類中,放置聲明db_table = "blog_tablename",並且Django會毫無問題地發現它們。

1

你可以用兩種方法解決這個問題。 第一個也是最容易的一個就是在每個模型的Meta類中提供一個db_table。另一個是創建遷移來應用更改。

據我所知南不支持重命名錶,所以你應該做它作爲三通遷移:

  • 移動德模型,並創建遷移(現在你有兩個表和新老)
  • 創建數據遷移並遍歷前一個表,將對象複製到以後
  • 刪除以前的模型併爲其創建遷移。

你可以讀到更多一點關於第二種方式in south docs

相關問題