Django在模型字段更新后将值转换为元组

时间:2017-12-14 18:01:47

标签: python django python-3.x django-2.0

我正在使用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的序列

当从模型中调用“save”方法时,Django会引发此错误,并在内部进行转换:

            return decimal.Decimal(value)

当我打印“px”的新值时,我得到了这个:

  

(2.6)

我做的唯一解决方法如下:

if isinstance(obj.px, tuple):
    obj.px = obj.px[0]

1 个答案:

答案 0 :(得分:2)

我很抱歉,我遇到了语法错误。我的代码如下:

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

所以问题是最后的逗号,python将命令视为元组我猜。我删除了那些通信,所有都是正确的。 (我想杀死自己jeje)