답변:
진수 필드는 통화 값에 대한 최적의 선택이 될 것입니다.
다음과 같이 보일 것입니다.
credit = models.DecimalField(max_digits=6, decimal_places=2)
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를 통한 강력한 백엔드가 있으며 기본적으로 표준 십진수 필드를 대체합니다.
DecimalField
이 더 실용적입니다. 그리고 나는 그것이 대부분의 사람들에게 적용되었다고 믿습니다. django-money
강조 표시된대로 사용하여 통화 처리를 포함 합니다. 그래서 이것은 전자 상거래 사이트, 지불 게이트웨이, 디지털 화폐, 은행 등 거래와 관련된 프로젝트에 더 많은 것입니다 ....
소수점을 정의하고 값 앞에 $ 기호를 반환합니다.
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()