我需要在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