[英]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
类一样。 但是, Cart
和Order
类期望使用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.