Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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 DecimalField将零转换为0E-10_Python_Django_Postgresql - Fatal编程技术网

Python DecimalField将零转换为0E-10

Python DecimalField将零转换为0E-10,python,django,postgresql,Python,Django,Postgresql,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

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
保存为值时,通过管理界面

那么,为什么它不存储并显示一个零呢

文档中没有指定是强制使用小数点还是最大值

此显示是否因为需要10个位置?如果是这样,在我看来,使用默认表单小部件
TextInput
,它应该扩展到该大小,或者至少滚动到该大小


在PostgreSQL中,它存储为
0.0000000000

我也遇到了这个问题,并发现实际上一切都正常工作。在Python中,如果您实际定义了类似以下内容的
Decimal(“0.0000000000”)
,您将在控制台中看到:

>>> Decimal("0.0000000000")
Decimal('0E-10')
在我的情况下,我正在从SQLite3后端转换到PostgreSQL进行生产。在SQLite中一切都很好,因为它没有显式地显示(或存储)所有十进制数字。因此,如果您在SQLite编号字段中插入
0
,然后选择它,您将得到
0

但是,如果在PostgreSQL数字字段中插入
0
,它将在小数点上填充零,然后插入
0.0000000000
。因此,当Python将其放在十进制中时,您将看到
Decimal(“0E-10”)


更新-在Django 1.8中修复了问题

问题似乎出现在postgres后端或Psycopg 2.5.2适配器中。。。我也有同样的问题,postgres中的数据是0.00000000,但当django获取时,它显示为十进制(“0E-8”)(shell访问不仅是admin),如果我切换到sqlite3后端,那么它工作得很好,但是为了完整性,发布问题的解决方案。是的,Django将字段内容存储为decimal.decimal对象。在模板中,或者如果要写入文件(我需要这样做),则需要使用格式化选项。使用以前使用的模型字段的示例:str('%.10g'%self.min_包括在内).strip()这将删除所有非有效零。提示:在模板中,您可以使用
{{{value | floatformat}}
获得小数的合理输出。