首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django -使用外键进行多表继承

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

Stack Overflow用户
提问于 2013-07-25 03:41:24
回答 1查看 1K关注 0票数 0

在我的数据库设计中,我被困在了一个奇怪的位置,我希望得到一些意见。我们正在使用django-shop作为电子商务平台。为products定义了一个基类:

代码语言:javascript
复制
from polymorphic.polymorphic_model import PolymorphicModel

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

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

代码语言:javascript
复制
class Product(BaseProduct):
    # custom fields

我们现在想要创建另一个对象,表示对此Product对象的提议,类似于:

代码语言:javascript
复制
class Offer(models.Model):
    product = models.ForeignKey(Product)
    # more

我们希望将这个Offer对象添加到购物车中,并像常规的Product类一样在orders中使用它。但是,CartOrder类需要Product类型的对象

代码语言:javascript
复制
class Order(models.Model):
    product = models.ForeignKey(Product)

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

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

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

你有什么想法来解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-25 16:11:50

使用Model Inheritance

代码语言:javascript
复制
class Offer(Product):

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

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

为什么不使用django-shop-discounts,而不是“向购物车中添加优惠”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17843433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档