2009-12-30 71 views
1

使用django,假設我有模型類A和B,代表不同類型的Companies。每個公司可能有多個與之關聯的用戶。很顯然,我想使用django的User模型來獲取登錄信息等。我會怎麼做呢?我會添加一個UserProfile,它有兩個外鍵,一個是A,另一個是B(而非空指向用戶工作的公司)?還是有另一種方式?django用戶關係

謝謝!

回答

1

使用繼承:定義公司的超類,與普通領域,然後繼承該類並添加ClassACompany和ClassBCompany需要的東西。

這樣UserProfile可以有一個公司的外鍵。如果您需要從公司獲得特定類型的公司,您可以按照in the docs的描述來完成。

+0

啊哈,謝謝!感謝您的鏈接了。 – Colin 2009-12-30 16:11:52

1

你爲什麼不給公司一個班?這會讓你的系統更加簡單。

然後你可以有公司內部的特定字段,可以讓你判斷它是否是A型或B(有什麼區別呢?)的

+0

因爲不同的公司有不同的數據和不同的關係 - A有多個工廠,而B有多個船,或者其他什麼。 – Colin 2009-12-30 16:10:37

+0

然後你可以再減少你的模型。讓公司擁有多個具有類型(發貨等)的資產實例。例如。 – 2009-12-30 16:25:10

0

如果您確實必須在CompanyA和CompanyB內部有不同的字段,那麼您可以讓它們都來自您的ForeignKey將指向的公共公司類。

0

您需要引用公司模型,並且如果需要,請將公司與CompanyA和CompanyB分類。爲了簡單起見,您的公司類可能具有type屬性,可能的值爲AB,那麼您可以避免子類。