假设我为3种类型的会员资格提供3种不同的收费表:
正常
0 - 1小时:每小时10美元
1 - 5小时:每小时9美元
5 - 12小时:每小时8美元
会员
0 - 1小时:每小时8美元
1 - 5小时:每小时7美元
5 - 12小时:每小时6美元
高级
0 - 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 :(得分: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}},}}
(当然,您可以更改变量结构。我在这里使用了词典,但您可以使用元组,列表或任何更适合您需求的内容。)
然后您可以将其直接放在 settings.py 或其他python文件中(例如 charges.py ),然后将其导入 settings.py 强>
<强> 1。解决方案1:
直接将其放在 settings.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)。