Django 1.6,Python 2.7.5 +,PostgreSQL 9.1,Linux。
我在模型中定义了几个十进制字段,如下所示:
min_inclusive = models.DecimalField(_('minimum inclusive'), max_digits=19,
decimal_places=10,
help_text=_("Enter the minimum (inclusive) value for this concept."),
null=True, blank=True)
当我输入0
(零)并通过管理界面保存对象时,我得到0E-10
作为值。
那么,为什么不只是存储和显示零?
文档未指定强制decimal_places
或是否为最大数量。
此显示是因为10个地方必需?如果是这样,使用默认表单小部件TextInput
,在我看来应该只扩展到该大小或至少滚动到该大小。
在PostgreSQL中,它存储为0.0000000000
答案 0 :(得分:10)
我也遇到了这个问题并发现实际上一切正常,如果你真的定义了这样的Decimal("0.0000000000")
,你会在控制台Decimal("0E-10")
>>> Decimal("0.0000000000")
Decimal('0E-10')
在我的情况下,我正在从 sqlite3 后端转换为 Postgres 进行制作,一切都在sqlite中正常工作,因为它没有明确显示(或存储)所有小数如果您在sqlite数字字段中插入0
,则为数字。如果您选择它,它将返回0
但是如果你在 Postgres 数字字段中插入0
,它将对小数点进行零填充并插入0.0000000000
所以当python将它放入十进制时你会见Decimal("0E-10")
更新 - 在Django 1.8中修复