2011-03-29 52 views
1

rails中,我可以聲明一個模型:polymorphic => true,這足以使模型成爲多態。像Django中的rails多態模型?

但是,如何在Django中創建多態模型?

我知道這不是簡單的軌道,但我需要在Django這樣做的介紹。

+1

也許如果你能描述目標是什麼,那麼這對Django開發者來說可能更有用。 Django允許模型繼承和模型代理......但是我們現在需要你現在想用多態來解決什麼問題? – 2011-03-29 16:39:16

+0

只是簡單的事情,就像使用Tag模型的文章,事件,帖子等等,在rails中它太容易了,但是在django中我必須自己創建它,並且做了很多事情(我認爲),我希望清楚地描述它! – 2011-03-29 16:53:22

+1

在Django中添加標籤支持太簡單了,太安裝第三方應用了,例如[django-tagging](http://code.google.com/p/django-tagging/)。它使用contenttypes框架,特別是[generic relations](http://docs.djangoproject.com/en/1.3/ref/contrib/contenttypes/#generic-relations)。 – Paolo 2011-03-29 17:26:35

回答

4

類似的問題在這裏:Double Foreign Key in Django?

答案是使用​​框架Django中實現多態的關聯設定。

+0

是的,正是我需要的是[ContentTypes](http://docs.djangoproject.com/en/1.3/ref/contrib/contenttypes/#generic-relations) – 2011-04-01 20:26:37

2

有一個簡單的應用程序叫django-polymorphic-models,它使您能夠創建一個基本的向下轉換函數的多態模型。它的工作原理非常簡單,添加一個存儲新創建對象的內容類型的字段。知道內容類型,您可以通過對象獲取子模型。* lowecase_model_name *(django表示通過OneToOneField在內部繼承)。如果您使用django-polymorphic-models,則模型上的downcast方法將爲您提供子模型。此外,它爲queryset添加了一些類似的方法!

+0

tnx [django-polymorphic-models](https: //code.google.com/p/django-polymorphic-models/),我看到它並閱讀代碼,但我確信我應該用django文檔和[ContentType](http:// docs。 djangoproject.com/en/1.3/ref/contrib/contenttypes/#generic-relations) – 2011-04-01 20:24:24

+0

我一直在使用多態模型,它的工作原理非常好 - 就像您期望模型首先運行一樣。 – 2012-06-19 08:38:52