【发布时间】:2018-02-24 07:25:54
【问题描述】:
我正在使用 django 2.0 和 Python 3.6.4
我的模型中有两个字段,分别称为 total 和 tax_total,它们都是十进制字段。
total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
tax_total = models.DecimalField(default=0.00, max_digits=100, decimal_places=2)
我想在函数中将其乘以 1.15 后计算该值。
def pre_save_cart_receiver(sender, instance, *args, **kwargs):
new_tax_total = instance.total * Decimal(1.15)
instance.tax_total = format(new_tax_total, '.2f')
pre_save.connect(pre_save_cart_receiver, sender=Cart)
它给了我错误: * 不支持的操作数类型:'float' 和 'Decimal'
当我想添加两位小数时,我会这样做:
new_total = math.fsum([cart_total, shipping_total])
new_total_formatted = format(new_total, '.2f')
math 有类似的东西吗?
【问题讨论】:
-
你试过
instance.total * 1.15吗? -
@JJJ 它仍然给出同样的错误。我认为 1.15 是一个浮点数。
-
type(instance.total)返回什么? -
@klobucar
<class 'decimal.Decimal'>