我有一个关于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()
方法叫做。但是,由于付款与订单链接,而非专业订单链接,因此将调用基本订单的order_payment_complete()
方法。
我真的不知道实现这种设计的最佳方式。也许我完全没有 - 但我想构建这个订单应用程序,以便我可以将其用于多种目的,并希望保持它尽可能通用。
如果有人能帮助我在这里,这将是伟大的! 谢谢, Nino
完美,这正是我所需要的。 :) – Nino 2009-08-11 15:34:35