2016-04-19 53 views
0

假設我有3個不同的電荷時間表一個房間3種類型的成員關係:書寫配置步驟功能

普通

0 - 1時間:10 $每小時

1 - 5小時:$ 9元小時

5 - 12小時:每小時

會員8 $

0 - 2小時:$每小時8

1 - 5小時:$ 7,00小時

5 - 12小時:每小時

高級

0 $ 6 - 1小時:每小時4美元

1 - 5小時:每小時3美元

5-12小時:每小時2美元

這些費用可以在前端配置。

動態存儲它們並執行計算的最佳實踐是什麼?

我有一個想法,但我相信有更好的在那裏:

SQL表:membership_rates

membership,min_hr,max_hr,rate 
normal,0,1,10 
normal,1,5,9 
normal,5,12,8 
member,0,1,8 
member,1,5,7 
member,5,12,6 
premium,0,1,4 
premium,1,5,3 
premium,5,12,2   
在僞代碼

然後,

find out membership type 
query the rates for the membership type in an array 

while rent_amt is larger than max_hr of the query: 
    rate = selected_rate from the bracket 
    find next smaller rate 


return the rate * the no. of hours used 

Python中的一個例子(Django)是:

amt_used = rent.amt_used 
membership = member.membership 
rates = Rates.objects.filter(membership=membership).order_by(max_rate) 
rate = 0 
while amt_used > rates.max_hr: 
    rate = rates.rate 

return amt_used * rate 
+0

你是什麼意思的「動態存儲」?這些價值可能經常改變? – vmonteco

+0

是的值可以改變。 – bryansis2010

回答

0

我建議你把你的價值觀在一個變量:

CHARGES_SCHEDULES = {"normal" : {0 : {"time" : 1, 
             "per_hour" : 10}, 
           {1 : {"time" : 5, 
             "per_hour" : 9}}, 
           {5 : {"time" : 12, 
             "per_hour" : 8}},}, 
        "member" : {0 : {"time" : 1, 
             "per_hour" : 8}, 
           {1 : {"time" : 5, 
             "per_hour" : 7}}, 
           {5 : {"time" : 12, 
             "per_hour" : 6}},}, 
        "premium" : {0 : {"time" : 1, 
             "per_hour" : 4}, 
           {1 : {"time" : 5, 
             "per_hour" : 3}}, 
           {5 : {"time" : 12, 
             "per_hour" : 2}},}} 

(你可以改變航向的變量結構。我用dictionnaries在這裏,但你可以使用元組,列表或任何可能滿足您的需求更好。)

然後你就可以直接把它放在你的settings.py或在不同的Python文件(charges.py例如)並將其導入到您的settings.py中。

1解決方法1:

直接把它放在你設置。PY,然後在需要的時候在你的Python文件只需導入你的價值觀:

anyfile.py

from django.conf import settings 

print(settings.CHARGES_SCHEDULES["member"][1]["time"]) 

2.解決方案2:

把它放在一個單獨的Python文件(例如:charges.py)並將該文件導入您的settings.py

settings.py

from charges import CHARGES_SCHEDULES 

,然後只需要導入它在你的其他Python文件以前一樣(參見解決方案1)。