15

我正在开发一个包含Offer模型的 Django 应用程序。实例Offer包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有一个Television模型,一个Camcorder模型等)。所以我希望Offer模型包含一个多态(或“通用”)关联来指向任何产品。

目前,我所发现的只是在应用程序中使用通用关联ContentTypes。这可能会,但我正在寻找替代品,如果有的话。

谢谢你的帮助。

(请每个答案一个解决方案)

4

5 回答 5

6

ContentTypes 是正确的方法。这是因为 ForignKey 只能指向一种类型的表,因此您需要通过中间表并根据不同的类型进行拆分。

所以类层次结构的模型继承,但外键的 ContentType。

于 2010-01-23T23:27:39.283 回答
3

如果您只需要指向“任何产品”而不是任何模型,那么解决方案是拥有一个所有产品都继承自的 Product 模型(即,Television 和 Camcorder 都是 Product 的子类),并为您的 Offer 模型提供一个 ForeignKey产品。

于 2009-01-06T18:49:14.437 回答
3

你不能在 Django 中做到这一点。使用通用关系或添加此功能的 Django 应用程序,如django_polymorphic

于 2011-03-03T05:12:59.270 回答
2

看看django-polymorphic,它实现了这个特性,内部也使用了 ContentTypes。

于 2013-05-21T14:31:09.497 回答
-4

您可能想看看模型继承

于 2009-01-06T10:15:46.470 回答