表示美元金额的最佳Django模型字段是什么?

145 投票
6 回答
90090 浏览
提问于 2025-04-15 12:57

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

一个小数字段是存储货币值的最佳选择。

它的样子大概是这样的:

credit = models.DecimalField(max_digits=6, decimal_places=2)

撰写回答