【发布时间】:2009-08-11 10:40:07
【问题描述】:
我有一个关于 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()
现在的实际问题是:我有一个更专业的应用程序可以扩展此订单。所以它添加了一些更多的字段,等等。示例:
class SpecializedOrder(Order):
# some more fields
def order_payment_complete(self):
# here we do some specific stuff
pass
当然,预期的行为如下:我创建了一个 SpecializedOrder,为该订单下达了付款,并调用了 SpecializedOrder 的 order_payment_complete() 方法。但是,由于 Payment 与 Order 相关联,而不是与 SpecializedOrder 相关联,因此会调用基本 Order 的 order_payment_complete() 方法。
我真的不知道实现这种设计的最佳方式。也许我完全不在了 - 但我想构建这个订单应用程序,以便我可以将它用于多种目的,并希望尽可能保持通用性。
如果有人可以在这里帮助我,那就太好了! 谢谢, 尼诺
【问题讨论】:
标签: django django-models