我正在使用 Django 2.0。我有一个声明为字段的模型:
px = models.DecimalField(max_digits=10, decimal_places=2, default=0)
从数据库中获取此对象的实例后,我尝试使用以下命令更新其属性:
obj.px = "-2.6"
值“-2.6”来自一个变量,但我已经使用硬代码进行了测试:-2.6、2.6、decimal.Decimal(“-2.6”) 等。它总是将该值转换为我不知道的元组为什么。我在 django 结果中得到的是:
参数必须是长度为 3 的序列
Django 在从模型中调用“save”方法时会引发此错误,并在内部进行转换:
return decimal.Decimal(value)
当我打印“px”的新值时,我得到了这个:
(2.6,)
我所做的唯一修复如下:
if isinstance(obj.px, tuple):
obj.px = obj.px[0]