繁体   English   中英

django-使用外键进行多表继承

[英]django - Use foreign key for multi-table inheritance

我在数据库设计中处于一个奇怪的位置,我希望能提出一些意见。 我们正在将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类是我们想要添加的东西,而无需修改其余部分。

关于如何解决这个问题有什么想法吗?

使用模型继承

class Offer(Product):

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

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

为什么不使用django-shop-discounts而不是“在购物车中添加要约”?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM