我通过Django将数据保存到PostgreSQL后端.我的模型中的许多字段都是DecimalFields设置为任意高的max_digits和decimal_places,对应于数据库后端中的数字列.每列中的数据具有先验未知的精度(或小数位数),并且给定列中的每个数据不需要具有相同的精度.
例如,模型的参数可能如下所示:
{'dist': Decimal("94.3"), 'dist_e': Decimal("1.2")}
{'dist': Decimal("117"), 'dist_e': Decimal("4")}
其中键是数据库列名.
在输出时,我需要保留并重新显示这些数据的精确度.换句话说,在查询数据库之后,显示的数据看起来与读入的数据完全一样,没有额外的数据.或者在小数中缺少尾随0.但是,当在django shell或admin界面中查询时,所有DecimalField数据都会返回许多尾随0.
我已经看到类似的问题回答金钱值,其中精度(2位小数)是已知的,并且对于给定列中的所有数据都是相同的.但是,当精度不同且事先不知道时,如何最好地保留Django中的Decimal值和PostgreSQL中的数值所表示的精确精度?
编辑:
可能是另一个有用的信息:当查看在Django dbshell中保存数据的表时,也会出现许多尾随0.在保存到PostgreSQL后端时,python Decimal值显然转换为models.py文件中指定的最大精度值.