0

我在我的数据库设计中陷入了一个奇怪的位置,我将不胜感激。我们正在使用 django-shop 作为电子商务平台。为产品定义了一个基类:

from polymorphic.polymorphic_model import PolymorphicModel

class BaseProduct(PolymorphicModel):
    ...
    class Meta:
        abstract = True

我们为自己的Product对象扩展了这个基类:

class Product(BaseProduct):
    # custom fields

我们现在要创建另一个对象,表示对该Product对象的报价,例如:

class Offer(models.Model):
    product = models.ForeignKey(Product)
    # more

我们希望将此 Offer对象添加到购物车中,并在订单中使用,就像常规Product类一样。然而,CartOrder需要类型的对象Product

class Order(models.Model):
    product = models.ForeignKey(Product)

因此,我们不能将Offer对象添加到购物车,或将它们保存在订单中。

我也在考虑创建Offer一个子类Product,但不是在典型的多表继承中使用 OneToOne 关系,而是以某种方式将其更改为常规 ForeignKey。我什至不确定这是否有意义,更不用说可能了。

我们的数据库已经部署在生产环境中,包含许多Product对象,而这个 offer 类是我们想要在上面添加的东西,而不需要修改其余部分。

关于如何解决这个问题的任何想法?

4

1 回答 1

0

使用模型继承

class Offer(Product):

    products = ManyToManyField(Product, related_name='offers')

这将创建一个报价(也是一个产品,因此可以添加到购物车),该报价也指向许多相关产品。

为什么不使用django-shop-discounts而不是“向购物车添加报价” ?

于 2013-07-25T08:11:50.247 回答