2009-01-06 84 views
12

我正在研究包含Offer模型的Django應用程序。一個Offer實例包含定價條件並指向產品定義。產品模型實際上是一個層次結構(我有一個Television模型,一個Camcorder模型等)。所以我希望Offer模型包含一個多態(或「通用」)關聯指向任何產品。如何在Django中定義模型之間的多態關係?

現在,我發現的全部是使用generic associations in the ContentTypes application。這可能會,但我正在尋找替代品,如果有的話。

感謝您的幫助。

(每回答一個解決方案請)

回答

-3

你可能想看看model inheritance

+0

我明顯同意,但請您明確說出答案,以便讓有人提出真正有用的問題。這樣我就可以爲它+1。 – Ivan 2009-01-06 14:29:39

+0

謝謝,但我不認爲這是答案。我需要的是類似於: class Offer(models.Model): product = models.ForeignKey(Product) ... 其中Product是一個抽象類,而實際引用的對象是一個具體實例子類。 任何想法? – MiniQuark 2009-01-07 09:12:58

3

如果你只需要指向「任何產品」,而不是任何型號,那麼解決方案是有一個產品模型,所有的產品繼承(即電視和攝像機都是產品的子類),並給你的優惠將ForeignKey建模成產品。

4

ContentTypes是正確的方法。 這是因爲ForignKey只能指向一種類型的表,因此您需要通過一箇中間表並根據不同的類型進行拆分。

因此模型繼承的類層次結構,但ContentType的外鍵。

相關問題