Django ORM - 为DecimalField分配原始值

时间:2009-09-24 18:20:59

标签: python django django-models casting django-orm

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

2 个答案:

答案 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分配字符串值而不会出错。