回答:
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
他の答えは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-moneyを介した強力なバックエンドがあり、基本的に標準の10進数フィールドのドロップイン置換です。
DecimalField
がより実用的です。そして、私はそれがほとんどの人に適用されると信じています。django-money
彼らが強調したように使用して、通貨処理を含めます。これは、複数のそのようななどのeコマースサイト、支払いゲートウェイ、デジタル通貨、銀行、....等の取引に関わるプロジェクトのためになるように
小数を定義し、値の前に$記号を返します。
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のフィールドタイプ「倍精度」が必要な場合は、djangoモデルで行う必要があります。
field = models.FloatField()