2013-05-15 45 views
2

如何在兩個不同的數據庫中託管Django中的模型?使用兩個數據庫的單個Django應用程序

到目前爲止,我在我的Django環境中建立了3個數據庫。我的一個應用程序使用Router自動將數據發送到正確的數據庫 - 這很容易完成,因爲此應用程序只處理該數據庫。

但是,我有另一個應用程序使用兩個不同的數據庫。該應用程序「控制」其中的一個,但從第二個獲取數據,完全通過另一個應用程序更新。

我已經嘗試在模型的Meta類中添加一個任意屬性,以便在路由器中進行匹配,但這在Django中是不允許的(正如我發現的那樣)。

什麼數據可以提供可以在路由器中匹配的模型,知道要去哪個數據庫?

+0

我還沒有測試過這個確切的情況,但是如果你知道什麼時候定義你的模型類,你想使用哪個DB,你可以爲它自己設置一個任意屬性,而不是它的Meta類。 –

+0

我已經嘗試在常規模型中設置'db_name'屬性,但並非所有模型都具有該屬性(並且系統模型不能被強制擁有它)。儘管我嘗試驗證屬性的存在,但當它達到這些時,我的路由器會窒息。在這種情況下,如何驗證可能未定義的屬性? –

+0

您可以使用'hasattr'來檢查,或者只是嘗試/除了捕獲異常。 –

回答

1

如果您知道何時定義您的模型類您想使用哪個數據庫,您可以向類本身添加一個任意屬性而不是它的Meta類。在路由器中,可以使用hasattr來查看屬性是否存在(因爲它不適用於內置模型),或者只是嘗試/除外並捕獲異常。

相關問題