我正在开发一个包含Offer
模型的 Django 应用程序。实例Offer
包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有一个Television
模型,一个Camcorder
模型等)。所以我希望Offer
模型包含一个多态(或“通用”)关联来指向任何产品。
目前,我所发现的只是在应用程序中使用通用关联ContentTypes
。这可能会,但我正在寻找替代品,如果有的话。
谢谢你的帮助。
(请每个答案一个解决方案)
我正在开发一个包含Offer
模型的 Django 应用程序。实例Offer
包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有一个Television
模型,一个Camcorder
模型等)。所以我希望Offer
模型包含一个多态(或“通用”)关联来指向任何产品。
目前,我所发现的只是在应用程序中使用通用关联ContentTypes
。这可能会,但我正在寻找替代品,如果有的话。
谢谢你的帮助。
(请每个答案一个解决方案)
ContentTypes 是正确的方法。这是因为 ForignKey 只能指向一种类型的表,因此您需要通过中间表并根据不同的类型进行拆分。
所以类层次结构的模型继承,但外键的 ContentType。
如果您只需要指向“任何产品”而不是任何模型,那么解决方案是拥有一个所有产品都继承自的 Product 模型(即,Television 和 Camcorder 都是 Product 的子类),并为您的 Offer 模型提供一个 ForeignKey产品。
你不能在 Django 中做到这一点。使用通用关系或添加此功能的 Django 应用程序,如django_polymorphic。
看看django-polymorphic,它实现了这个特性,内部也使用了 ContentTypes。
您可能想看看模型继承。