我需要在Django模型的字段中存儲美元$美元的金額。什麼是最好的模型字段類型使用?我需要能夠讓用戶輸入這個值(通過錯誤檢查,只需要一個精確到美分的數字),格式化它以輸出給不同地方的用戶,並用它來計算其他數字。什麼是用於表示美元金額的最佳django模型字段?
59
A
回答
95
28
field = models.DecimalField(max_digits=8, decimal_places=2)
注意max_digits應> = decimal_places。這個例子設置將允許值高達:999,999.99
文檔:https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield
7
定義小數和值前面返回一個$符號。
price = models.DecimalField(max_digits=8, decimal_places=2)
@property
def price(self):
return "$%s" % self.price
1
field = models.DecimalField(max_digits=8, decimal_places=2)
應該創建一個領域對PostgreSQL,如:
"field" numeric(8, 2) NOT NULL
這是PostgreSQL的存儲美金金額的最佳途徑。
如果你需要一個PostgreSQL字段類型「雙精度」,那麼你需要做的Django模型:
field = models.FloatField()
17
其他的答案是100%正確的,但也不是很實際的,因爲你仍然有手動管理輸出,格式等
我會建議使用django-money:
from djmoney.models.fields import MoneyField
from django.db import models
def SomeModel(models.Model):
some_currency = MoneyField(
decimal_places=2,
default=0,
default_currency='USD',
max_digits=11,
)
從模板自動作品:
{{ somemodel.some_currency }}
輸出:
$123.00
它通過Python錢了強大的後端,它本質上是一個下拉更換爲標準的十進制領域。
相關問題
- 1. 什麼是Django模型字段選擇最佳實踐?
- 2. 在Django模型中表示URL的最佳方式是什麼?
- 3. 什麼是用於Sqlite數字的最佳SQL字段類型
- 4. 什麼字段類型用於Django中的模型字段?
- 5. 向Django用戶模型添加更多字段的最佳方法是什麼?
- 6. 確定一美元金額的最佳硬幣組合
- 7. 處理函數django模型字段默認值的最佳方法是什麼?
- 8. 在Django中設計模型字段的最佳方法是什麼?
- 9. 金額小於1美元時如何獲得零金額
- 10. 用美分顯示全部美元金額的輸入框
- 11. 在django模型中表示許多布爾值的最佳方式是什麼?
- 12. php美元金額正則表達式
- 13. Django模型:總金額在多個外鍵字段值
- 14. 什麼是REST的最佳ERROR模型
- 15. 處理django模型對象的最佳方式是什麼?
- 16. 什麼是連接這兩個Django模型的最佳方式
- 17. 顯示django表中的模型字段
- 18. REGEXP使用egrep匹配美元金額
- 19. 爲Django模型存儲SEO特定元數據的最佳方式是什麼?
- 20. 什麼是在JavaScript中從美元金額中提取數字的最緊湊,高效和可靠的方法?
- 21. 什麼Django模型字段用於複選框形式?
- 22. 什麼是美國郵政編碼的最佳列類型?
- 23. JavaScript - 美元金額的上限
- 24. 關於模型和視圖的最佳實踐是什麼?
- 25. 適用於打印樣式表的最佳字體是什麼?
- 26. 表單字段「金額」驗證警報$美元符號不允許
- 27. 最佳匹配額定配對的最佳方式是什麼?
- 28. Django在模型中顯示額外字段的值
- 29. 使用單獨的陣列美元和美分印刷美元金額
- 30. 在Rails模型中「重載」一個字段的最佳方式是什麼?
除非你想代表國家債務,在這種情況下max_digits必須> 20 – 2016-08-17 14:44:34
decimal_places = 2不一定正確,如果你需要這個支持其他貨幣。一些貨幣有三位小數,比特幣有百日咳8. – 2018-01-13 13:29:44
我認爲這個例子幾乎對所有貨幣都是正確的。爲了將貨幣表示爲比特幣,我認爲使用整數域來保存satoshis中的金額要好得多,然後將其顯示給最終用戶(BTC,mBTC等) – jion 2018-01-21 06:01:38