我在django中遇到问题 - 我想存储“提供”值。但有时其价值是标量,例如2.10 $,有时它的值是百分比,例如10%。当我在数据库中有值2.10时,我应该将此值添加到基本价格。当我在数据库中有0.10的值时,我应该添加10%的基数来得到最终价格。例如:
10.0 + 2.10 = 12.10
10.0 + 10.0 * 0.10 = 11.0(或10.0 * 1.10 = 11.0)
为了避免有多个列(用于存储标量或百分比)和混淆:怎么办,如果填充了两个值,我决定存储字符串值:“+2.10”或“* 0.10”。所以看起来,我需要在django中进行某种符号运算。
我应该创造: - 模型领域 - 表格字段 - 表单小部件
示例代码:
class ProvistionWidget(form.Widget):
pass
class ProvisionField(form.Field):
pass
def eval_provision(price, provision):
# if provision starts with *, then multiply by price
# if provision starts with +, then add to price
return final_price
class Stock(models.Model):
price = FloatField()
provision = ProvisionField()
def calc_price(self):
return eval_provision(self.price, self.provision)