def discount_price(self,price=None):
"""折扣后的价格"""
if price is None: # 如果没有传递参数,则默认采用当前原价
price = self.price
price = float(price) # 默认获取到的数据时Decimal类型的
try:
activity = self.course_prices.get(activity__start_time__lt=datetime.now(), activity__end_time__gt=datetime.now(),is_show=True,is_delete=False)
except:
return price
# 计算参与活动后的真实价格
condition = activity.discount.condition
# 判断当前课程原价是否满足活动的参与条件
if condition > price:
return price
sale = activity.discount.sale
if sale == "0":
"""限时免费"""
price = 0
elif sale[0] == "*":
"""限时折扣"""
num = float( sale[1:] ) # 折扣数值
price = price * num
elif sale[0] == "-":
"""限时减免"""
num = float( sale[1:] ) # 减免数值
price = price - num
elif sale[0] == "满":
"""限时满减"""
num_list = sale.split("\r\n")
sale_list = []
for item in num_list:
sale_condition,sale_num = item[1:].split("-")
if price > float(sale_condition):
sale_list.append( float(sale_num) )
current_sale = max(sale_list)
price = price - current_sale
return "%.2f" % price
def __str__(self):
return "%s" % self.name