书写配置步骤功能
问题描述:
假设我有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
答
我建议你把你的价值观在一个变量:
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)。
你是什么意思的“动态存储”?这些价值可能经常改变? – vmonteco
是的值可以改变。 – bryansis2010