2009-10-22 55 views
4

在我的應用程序中使用來自其他django應用程序的模型的正確方法是什麼?例如,我是否應該簡單地進入其他應用程序的模型,並有效地添加我的功能來耦合這兩個應用程序?我應該如何使用其他應用程序的django模型?

我應該使用django代理模型子類化模型來添加我的應用程序特定功能嗎?然而,這種方法在父應用程序中排除了這種附加功能。

我應該簡單地導入模型並創建庫函數來處理這個附加功能嗎?

謝謝! 皮特

+0

最近我一直在想,如果使用REST API在應用程序之間進行對話是否合理/可取,就好像我們正在與遠處的服務交談一樣....? – jMyles 2011-11-12 03:11:17

回答

2

有跡象表明,最終會被加上在其他應用程序的應用程序的某些類別 - 一個很好的例子是django.contrib.auth:如果您使用的是Django的用戶模型,你取決於應用程序和自己的應用程序連接它。

這種情況沒有任何問題。我傾向於認爲它不如耦合和更多依賴。您的應用取決於django.contrib.auth可用。這是很自然的事情,因爲你需要這種功能。您可以隨時使用其他應用程序替換該應用程序,該應用程序提供與您當前正在使用的相同接口...

現在,如果您有兩個自己的應用程序,並且需要知道對方的模型,我可以考慮兩個場景:

  1. 您需要爲您的共享模式

  2. 第三次申請,他們應該是隻有一個應用程序(不常見的;你有一個理由讓他們分開,開始!)

我通常有我自己的core應用程序(就像有一個django.core),我保留了我的項目中應用程序通用的代碼。如果不同應用程序的模型彼此依賴,則它們會移至此應用程序。

現在,您的兩個應用程序也可能只有一個應用程序 - 但這不應該是默認思維。單片應用程序是一件非常糟糕的事情(TM)。

相關問題