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

我需要在 Django 型号的田地里存放一美元。使用的最佳模型字段类型是什么?我需要能够让用户输入这个值(通过错误检查,只希望数字精确到美分) ,格式化输出到不同地方的用户,并使用它来计算其他数字。

78900 次浏览

一个 十进制字段是正确的选择 货币价值。

它看起来会像这样:

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

请注意 max _ 數字应该是 > = decal _ place. 这个例子设置允许的值最高为: 999.999.99

医生: https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield

定义一个小数并在值前面返回一个 $符号。

    price = models.DecimalField(max_digits=8, decimal_places=2)


@property
def price_display(self):
return "$%s" % self.price
field = models.DecimalField(max_digits=8, decimal_places=2)

应该为 PostgreSQL 创建一个字段,如:

 "field" numeric(8, 2) NOT NULL

这是 PostGreSQL 存储美元数量的最佳方式。

如果需要 PostgreSQL 字段类型“ double Precision”,那么需要在 django 模型中执行:

field = models.FloatField()

其他的答案是100% 正确的,但不是很实用,因为你仍然必须手动管理输出,格式等。

我建议使用 姜戈钱:

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 提供了一个强大的后端,本质上是对标准十进制字段的替代。