Django - 如何在一列中存储标量值(用于添加)或百分比值(用于乘法)?

时间:2017-01-02 12:55:53

标签: django django-models django-forms

我在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)

0 个答案:

没有答案