我正在开发一个包含Offer
模型的Django应用程序。 Offer
实例包含定价条件并指向产品定义。产品模型实际上是一个层次结构(我有Television
模型,Camcorder
模型等等。所以我希望Offer
模型包含指向任何产品的多态(或“通用”)关联。
目前,我发现我只能使用generic associations in the ContentTypes
application。这可能会,但我正在寻找替代品,如果有的话。
感谢您的帮助。
(每个答案一个解决方案请)
答案 0 :(得分:4)
ContentTypes是正确的方法。 这是因为ForignKey只能指向一种类型的表,因此您需要通过一个中间表并根据不同的类型进行拆分。
因此,类层次结构的模型继承,但外键的ContentType。
答案 1 :(得分:3)
如果您只需指向“任何产品”,而不是任何型号,那么解决方案是拥有所有产品继承的产品型号(即电视和摄像机都是产品的子类),并提供您的优惠型号一个ForeignKey到产品。
答案 2 :(得分:2)
你不能在Django中这样做。使用generic relations或添加此功能的Django应用程序,例如django_polymorphic。
答案 3 :(得分:1)
看一下django-polymorphic,它实现了这个功能,并在内部使用了ContentTypes。
答案 4 :(得分:-4)
您可能需要查看model inheritance。