小编Nin*_*ino的帖子

应用和模型继承的松散耦合

我有一个关于Django的设计问题。我不太确定如何将应用程序松散耦合的原理应用于此特定问题:

我有一个订单应用程序(在线商店中)管理订单。在此订单应用程序中,我有两个类:

class Order(models.Model):
    # some fields
    def order_payment_complete(self):
        # do something when payment complete, ie. ship products
        pass

class Payment(models.Model):
    order = models.ForeignKey(Order)
    # some more fields     
    def save(self):
        # determine if payment has been updated to status 'PAID'
        if is_paid:
            self.order.order_payment_complete()
        super(Payment, self).save()
Run Code Online (Sandbox Code Playgroud)

现在的实际问题是:我有一个更专业的应用程序,可以扩展此顺序。因此,它向其中添加了更多字段,等等。例如:

class SpecializedOrder(Order):
    # some more fields
    def order_payment_complete(self):
        # here we do some specific stuff
        pass
Run Code Online (Sandbox Code Playgroud)

现在,当然,预期的行为如下:我创建一个SpecializedOrder,放置此订单的付款,并order_payment_complete()调用SpecializedOrder 的方法。但是,由于“付款”链接到“订单”而不是“ SpecializedOrder”,因此order_payment_complete()将调用基本“订单” 的方法。

我真的不知道实现这种设计的最佳方法。也许我已经完全不了解了-但是我想构建此订单应用程序,以便可以将其用于多种用途,并希望使其尽可能通用。

如果有人可以在这里帮助我,那就太好了!谢谢,尼诺

django django-models

5
推荐指数
1
解决办法
624
查看次数

标签 统计

django ×1

django-models ×1