我有一個關於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