example documentacion decimalfield django django-models

documentacion - ¿Cuál es el mejor campo de modelo de Django para representar una cantidad en dólares estadounidenses?



django models select field (5)

Defina un decimal y devuelva un signo $ delante del valor.

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

Necesito almacenar una cantidad de dólares estadounidenses en un campo de un modelo de Django. ¿Cuál es el mejor tipo de campo modelo para usar? Necesito poder hacer que el usuario ingrese este valor (con verificación de errores, solo quiero un número exacto en centavos), formateelo para enviarlo a usuarios en diferentes lugares y utilícelo para calcular otros números.


Las otras respuestas son 100% correctas, pero no son muy prácticas, ya que de todos modos tendrás que gestionar manualmente la salida, el formato, etc.

Sugeriría usar 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, )

Funciona automáticamente desde plantillas:

{{ somemodel.some_currency }}

Salida:

$123.00

Tiene un backend poderoso a través de python-money y es esencialmente un reemplazo directo para los campos decimales estándar.


Un campo decimal es la elección correcta para el valor de la moneda.

Se verá algo así como:

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


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

Debería crear un campo para PostgreSQL como:

"field" numeric(8, 2) NOT NULL

¿Cuál es la mejor manera para que PostGreSQL almacene el monto en dólares estadounidenses?

Si necesita un campo de PostgreSQL, escriba "double precision", luego debe hacerlo en el modelo django:

field = models.FloatField()