表示美元金额的最佳Django模型字段是什么?
我需要在Django模型的一个字段里存储美国的$
美元金额。请问用什么样的字段类型比较好呢?我希望用户能输入这个金额(需要检查输入的正确性,只想要精确到分),还要能把它格式化成不同的样子给用户展示,并且用这个金额来计算其他数字。
6 个回答
45
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
55
其他的回答都是对的,但不太实用,因为你还是得手动管理输出、格式等等。
我建议使用 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-money 提供了强大的后台支持,基本上可以直接替代标准的小数字段。
257