书写配置步骤功能

问题描述:

假设我有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

我建议你把你的价值观在一个变量:

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)。