2010-02-25 70 views
1

我有將不同現有應用程序的模型分組到一個大的新的閃亮的應用程序的頭腦的想法。沒有一個超級重要的理由需要這樣做,但是將所有代碼整合到一個子目錄中將會很好,並且它可以改進網站,以便將所有模型組合在同一模塊頭下的admin_index中。更改現有Django模型上的app_label賦值是否是一個壞主意?

我的第一個想法是將所有模型中的現有表格名稱硬編碼爲Meta中的db_table設置,然後給出相同的app_label設置。

但我擔心的是,這可能會搞砸了一切的ContentType和auth權限設置。有沒有人試過這個?我已經搜索了一下,並沒有看到任何直接解決問題的東西,儘管看起來有些人提出了用一些自定義配置設置重新確定admin_index的方法。

回答

0

移動模型會使現有的ContentType條目無用,這是正確的。不知道項目的具體細節,很難說什麼可能是一個「好主意」。您可以嘗試分支代碼,進行更改,並更新內容類型和權限表來反映。或者,您可以使用South編寫數據遷移,儘管根據創建或運行遷移的時間與移動模型的時間來找到平衡,可能會非常棘手。如果您能夠運行中繼線,您也可以檢查自然鍵:http://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys。這可能會導致更簡單的方式將數據導出到固定設備中,從而一旦進行更改,您就可以在沒有太多困難的情況下加載它們。

如果您計劃在一段時間內使用Django和/或處理大型項目,您需要開始開發處理這些類型更改的技能。不斷演變的代碼和重構是生活中的事實。瞭解在臨時設置中進行這些更改的缺陷將使您在未來更好地處理團隊設置和大型項目中發生的各種問題。

+0

感謝您的建議,Brian。我嘗試通過對'db_table'進行硬編碼並添加新的'app_label'來調整其中一個模型。 使用新的app_label創建了一個新的ContentType對象,這聽起來不錯。但是似乎沒有創建相應的權限,並且在新的ContentType上運行ct.permission_set.all()時,我得到一個空列表。 試圖運行這些傢伙獲得更新的權限,但沒有運氣。 http://www.djangosnippets.org/snippets/696/ – palewire 2010-02-25 22:12:12

相關問題