1

我正在使用 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]
4

1 回答 1

11

很抱歉,我遇到了语法错误。我有这样的代码:

obj.px = variable1,
obj.py = variable2,

所以问题是最后的逗号,我猜python将命令作为元组。我删除了那些commnas,一切正常。(我想自杀jeje)

于 2017-12-14T19:43:16.507 回答