我通過Django將數據保存到PostgreSQL後端。我的模型中的許多字段都將DecimalFields設置爲任意高的max_digits和decimal_places,對應於數據庫後端中的數字列。每列中的數據具有未知的精確度(或小數位數)先驗,並且給定列中的每個數據不需要具有相同的精度。用Django DecimalField和PostgreSql數字字段保留輸出精度
例如,參數模型可能看起來像:
{'dist': Decimal("94.3"), 'dist_e': Decimal("1.2")}
{'dist': Decimal("117"), 'dist_e': Decimal("4")}
,其中鍵是數據庫列名。
輸出時,我需要保存並重新顯示讀取數據的精度。換句話說,在查詢數據庫之後,顯示的數據需要看起來與讀入的數據完全相同,小數點後面沒有附加或缺失的0。但是,在查詢時,無論是在django shell還是在管理界面中,所有DecimalField數據都會返回多個尾隨0。
我已經看到類似的問題回答貨幣價值,其中精確度(2位小數)是既知道和給定列中的所有數據相同。但是,如果精度不一致且事先不知道,那麼如何最好地保留由Django中的Decimal值和PostgreSQL中的數值表示的精確精度?
編輯:
可能的信息的附加有用的片:在查看該數據被保存dbshell在Django表中,許多拖尾的0也存在。在保存到PostgreSQL後端時,python Decimal值顯然轉換爲models.py文件中指定的最大精度值。
如果Django混淆了你的數字,你可能需要編寫一個自定義的ModelField,無論是從DecimalField子類還是從頭開始: -/ – Dave
是的。不幸的是,這個問題的簡短答案似乎是,Django不支持未精確指定的PostgreSQL數字列。我爲此考慮了一些解決方法,只要我有時間來制定它,我就會問另一個問題,以徵求他們的意見/建議。 – krosbonz