Django ORM - 给DecimalField赋值原始值
编辑!!! - 当我创建一个新对象时,把值转换成字符串似乎没问题,但当我尝试编辑一个已经存在的对象时,就不行了。
我在我的一个模型里有一个小数字段,格式是Decimal(3,2),意思是这个字段最多可以有3位数字,其中2位是小数。
当我查询到这些对象并尝试设置这个字段时:
fieldName = 0.85
或者
fieldName = .85
它就会报错,提示“无法将浮点数转换为DecimalField,先试着转换成字符串”...
所以我就这样做:
fieldName = str(0.85)
结果还是同样的错误。
我甚至尝试了:
fieldName = "0.85"
还是同样的错误。我是不是遇到什么框架的bug了,还是怎么回事?注意,当我实际进入Django管理后台手动编辑这些对象时,一切都正常。
我在使用Django 1.1和Python 2.6。
2 个回答
3
Django中的DecimalField是用一个Python的Decimal实例来表示的。你可以尝试这样做:
>>> obj.fieldName = Decimal("0.85")
而且,具体的表现可能还会根据你使用的数据库类型有所不同。比如在sqlite中,我可以在新建和已有的对象中给DecimalFields赋值字符串,而不会出错。
11
from decimal import Decimal
object.fieldName = Decimal("0.85")
或者
f = 0.85
object.fieldName = Decimal(str(f))