Мне нужно сохранить сумму доллара США в долларах США в поле модели Django. Каков наилучший тип поля модели? Мне нужно, чтобы пользователь вводил это значение (с проверкой ошибок, нужно только точное число до цента), отформатировать его для вывода пользователям в разных местах и использовать его для вычисления других чисел.
Какое наилучшее поле модели django используется для представления суммы в долларах США?
Ответ 1
Десятичное поле является правильным выбором для значения валюты.
Это будет выглядеть примерно так:
credit = models.DecimalField(max_digits=6, decimal_places=2)
Ответ 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
Ответ 3
Другие ответы на 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 и заменяет стандартные десятичные поля.
Ответ 4
Определите десятичную дробь и верните знак $ перед значением.
price = models.DecimalField(max_digits=8, decimal_places=2)
@property
def price_display(self):
return "$%s" % self.price
Ответ 5
field = models.DecimalField(max_digits=8, decimal_places=2)
Создать поле PostgreSQL, например:
"field" numeric(8, 2) NOT NULL
Каков наилучший способ хранения PostGreSQL в долларах США.
Если вам нужен тип поля PostgreSQL "двойная точность", то вам нужно сделать в модели django:
field = models.FloatField()