2010-11-09 95 views
24

我將簡要介紹一下:爲了在Django應用程序的精神和想法中工作,應用程序從另一個應用程序內導入模型可以嗎?例如,用戶統計應用將從用戶應用導入模型,如:from users.models導入用戶在Django應用程序之間共享模型

+2

請注意,在Django的模型名稱應該是單數。 – Ski 2010-11-09 19:49:03

回答

15

如果你正在構建一個沒有機會向公衆發佈的內部應用程序,當然可以做任何你想做的事情。

如果您正在構建一個內部應用程序,它幾乎不會被公開發布,但可能會被未來/當前開發人員使用,但一定要記錄應用程序需要正常工作的內容。

如果你正在構建一個公開發布的應用程序,試着保持它自我依賴(和Django的內部依賴,即使用django提供的,儘可能)。如果您確實需要第三方應用程序才能工作,或者如果第三方應用程序會使您的代碼更易於管理,那麼一定要包括依賴項,但要加倍確保記錄所有的要求和必要的設置。

在大多數情況下,只要您有足夠的文檔,您幾乎可以做任何事情。

但是,我不得不質疑製作屬於您自己User的模型,它與django的內置模塊auth.User同名。

+2

它不是同一個名字,而是完全相同的模型類。 – 2010-11-09 19:07:51

+0

用戶和用戶統計應用程序,只是爲了舉例,因爲我的情況不容易理解。這回答了我的問題,謝謝! – 2010-11-10 07:12:57

-1

不要這樣做。他們將擁有相同的應用程序名稱,而ORM將會感到困惑。改爲使用抽象模型,並從中派生出來。

+2

你沒有誤解OP的要求嗎?他沒有提到在不同的應用程序中對模型進行相同的定義,他在談論如何將User類導入到他的應用程序中,以便他可以從中獲取數據呢? IOW,這個問題的答案是「是的,當然你可以。」 – 2010-11-09 19:18:48

+0

@丹尼爾:情況可能如此。如果OP澄清他正在尋找什麼,那麼我會修改。 – 2010-11-09 19:25:17

+1

你應該考慮修改它,因爲你對你的解釋顯然是錯誤的 – Sensei 2015-07-15 19:13:10

1

你可以試試更好extending the Django User model with inheritance。您將使用添加了自定義字段的django用戶,因此您將擁有所有應用程序的相同用戶。

+2

我曾經在IRC(freenode#django)上看到過幾個人在嘗試子類「auth.User」時遇到問題後遇到問題。一般來說,除非你知道你需要它,否則這是你應該遠離的東西之一。另外,[用戶簡檔](http://docs.djangoproject.com/en/1.2/topics/auth/#storing-additional-information-about-users)是通常優選的存儲附加信息的方法用戶。 – eternicode 2010-11-10 05:26:33

25

答案是肯定的。 django項目中的一個應用程序從另一個應用程序導入模型是完全可以的。 django項目的力量在於應用程序及其相互作用。

還要確保您有實用程序應用程序從更通用的應用程序導入模型,而不是其他方式。所以「userstatistics」應用程序應該從「用戶」應用程序導入模型,但「用戶」應用程序不應該依賴「用戶統計」。

如果您的應用程序從第三方應用程序(可以說是django-piston)導入模型,請務必在需求文件中指定該模型。

相關問題