2010-01-20 54 views
1

我正在嘗試使用Django製作托兒管理應用程序,但我在付款代碼方面存在一些問題。幫助創建Django應用程序模型

每個孩子每年需要支付10次。這些付款有一些特殊性:

  • 根據父母的經濟情況,有些孩子可能會支付不同的金額。

  • 付款金額可能會在一年內發生變化。

  • 付款可以在不同的機會中支付。

  • 工作坊和食品被添加到付款的總價值(他們是可選的)。

我有問題才能建模此應用程序。我在想創建一個孩子模式和支付模式:

class Kid(models.Model): 
    food = models.BooleanField() 
    workshop = models.BooleanField() 
    special_price = models.DecimalField(blank=True) 

class Payment(models.Model): 
    kid = models.ForeignKey(Kid) 
    date = models.DateField() 
    amount = models.DecimalField()` 

假設我要在給定日期多moneya孩子(父母)怎麼也得付出就知道了。我不知道如何解決變化的價值問題(食品和工場的價值也可能在一年中發生變化)。

希望你能理解我,謝謝。 mF。

+3

其他人跆拳道閱讀標題時? – 2010-01-20 18:51:43

+2

確實。我也WTF'd。 – 2010-01-20 18:53:50

+1

您應該考慮將此問題的標題修改爲更具體一些,比如「需要幫助爲Django應用程序創建模型」,並且可能會添加一個面向對象的標記。乍一看這個問題看起來像垃圾郵件。 :-) – 2010-01-20 18:54:42

回答

0

無論您最終的模型將如何模樣,假設你將保持付款模式,你可以給它添加兩個字段:

payment_date = model.DateField() 
    already_paid = models.BooleanField() 

然後,爲了獲取逾期付款,您將能夠使一個查詢:

Payment.objects.filter(payment_date__lte=datetime.date.today(), already_paid=False) 

擁有這些支付對象,您將能夠計算確切的金額。

0

我會根據孩子的屬性計算付款,所以通過更新孩子的付款會發生變化。在付款之前,付款不會成爲數據庫中的條目,每次用戶請求付款時都會計算付款。

class Child(object): 
    def __init__(self,income,paydate,meals=False,workshops=False): 
     self.income = income 
     self.paydate = paydate 
     ... 

我也有一個定價規則模型,與子對象結合會給你付款金額。再次更新PricingRules將更改付款。

class PricingRules(object): 
    def __init__(self,income_scale,paydate,meal_price,workshop_price,num_payments): 
     ... 

我會避免每個Child都有PricingRules對象。屆時,將成爲支付對象

class Payment(object): 
    def __init__(self,amount,date_paid): 
     ... 

我避免顯示出特定於ORM正在使用的任何代碼,我認爲設計應該站在自己的,我也想保持的可能性敞開的使用沒有ORM的對象。使用構造函數也是我的個人風格,我喜歡知道當從一個類創建一個對象時,它將處於一個定義良好且穩定的狀態。沒有關於業務邏輯的更多細節,我有更多的問題,而不是超越這一點。