EDIT !!! - 当我创建一个 new 对象时,将值转换为字符串似乎工作正常,但是当我尝试编辑现有对象时,它不允许它。
所以我在我的一个Decimal(3,2)
模型中有一个十进制字段当我查询所有这些对象并尝试设置此字段时:
fieldName = 0.85
OR
fieldName = .85
它会抛出一个混合符号,“无法将float转换为DecimalField,尝试首先转换为字符串”...
然后我这样做:
fieldName = str(0.85)
同样的错误。
我甚至尝试过:
fieldName = "0.85"
同样的错误。我在这里遇到某种框架错误,或者是什么?请注意,当我实际进入Django Admin并手动编辑对象时,它可以正常工作。
我在Python 2.6上运行Django 1.1
答案 0 :(得分:11)
from decimal import Decimal
object.fieldName = Decimal("0.85")
或
f = 0.85
object.fieldName = Decimal(str(f))
答案 1 :(得分:3)
Django DecimalField是“......由python Decimal实例表示。”你可以试试:
>>> obj.fieldName = Decimal("0.85")
行为也可能因您使用的数据库后端而异。使用sqlite,我可以在新对象和现有对象中为DecimalFields分配字符串值而不会出错。