Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django在更新模型字段后将值转换为元组_Python_Django_Python 3.x_Django 2.0 - Fatal编程技术网

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

Python Django在更新模型字段后将值转换为元组,python,django,python-3.x,django-2.0,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结果中得到的是: 参数必

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

很抱歉,我有一个语法错误。我有这样的代码:

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

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

我很抱歉,我有一个语法错误。我有这样的代码:

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

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

您提到模型的保存方法出现错误。你能发布这个方法吗?嗨@Martey,我说的“save”方法是指Django的默认save方法(在Django.db.models.Model中)。我没有自定义的“save”方法您提到模型的save方法出现错误。你能发布这个方法吗?嗨@Martey,我说的“save”方法是指Django的默认save方法(在Django.db.models.Model中)。我没有自定义的“保存”方法。在提问时发布实际源代码片段是个好主意。在这种情况下,这可能是其他人解决问题的唯一方法。在提问时发布实际源代码片段是个好主意。在这种情况下,这可能是其他人解决问题的唯一方法。