Necesito almacenar un monto de $ EE.UU. En dólares 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.¿Cuál es el mejor campo de modelo de Django para representar una cantidad en dólares estadounidenses?
Respuesta
A decimal field es la elección correcta para el valor de la moneda .
Se verá algo como:
credit = models.DecimalField(max_digits=6, decimal_places=2)
field = models.DecimalField(max_digits=8, decimal_places=2)
Tenga en cuenta que MAX_DIGITS debe ser> = decimal_places. Esta configuración ejemplo permitiría un valor de hasta: 999.999,99
Docs: https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield
Definir un decimal y devolver un signo $ delante del valor.
price = models.DecimalField(max_digits=8, decimal_places=2)
@property
def price(self):
return "$%s" % self.price
. Se da cuenta de que acaba de crear un ciclo de recursión infinita en su propiedad, ¿verdad? –
field = models.DecimalField(max_digits=8, decimal_places=2)
debe crear condiciones para PostgreSQL como:
"field" numeric(8, 2) NOT NULL
¿Cuál es la mejor manera de cantidad en dólares de EE.UU. PostGreSQL almacenado.
Si necesita un tipo de campo PostgreSQL "doble precisión", entonces necesita hacer en modelo de Django:
field = models.FloatField()
Las otras respuestas son 100% correcta, pero no son muy prácticos ya que todavía tendrá para gestionar manualmente la salida, el formato, etc.
se recomienda 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 de forma automática a partir de plantillas:
{{ somemodel.some_currency }}
Salida:
$123.00
Cuenta con un motor de gran alcance a través de pitón de dinero y que es esencialmente una gota en el reemplazo para los campos decimales estándar.
* (con comprobación de errores, solo quiere un número exacto en céntimos), formatéelo para que se emita a usuarios en diferentes lugares y utilícelo para calcular otros números. * Para tales casos, use 'DecimalField' es más práctico. Y creo que se aplica a la mayoría de las personas. Utilizando 'django-money' como se destacó, incluye ** manejo de moneda **.Así que esto es más para proyectos que involucran transacciones como sitios de comercio electrónico, pasarela de pago, moneda digital, banca, etc. – Yeo
Argumentaría que, dado que están trabajando con USD, una moneda, tiene más sentido utilice una biblioteca de manejo de divisas como django-money (python-money) ya que hace que todo funcione como usted espera y permite ajustes de funciones futuros. La pregunta original dice que necesitan formato y cálculo (como lo citó) y para eso es mejor utilizar una biblioteca de divisas en lugar de un simple campo decimal. –
- 1. javascript - techo de una cantidad en dólares
- 2. Cómo representar el campo de formulario django en la plantilla
- 3. valor predeterminado para el campo en el modelo de Django
- 4. Opciones de campo modelo Django: ¿no sería mejor un dict?
- 5. Campo oculto en Django Modelo
- 6. ¿Cuál es la mejor manera de migrar datos en django
- 7. ¿Cuál es el mejor personaje para representar espacios en blanco en una URL?
- 8. Obtiene el campo de formulario de Django del campo modelo
- 9. ¿Cuál es el mejor campo para guardar el cumpleaños?
- 10. ¿Cuál es el mejor enfoque para cambiar las claves principales en una aplicación existente de Django?
- 11. ¿Cuál es el mejor backend de CouchDB para Django?
- 12. ¿Cómo representar dos campos modelo como un campo de formulario en Django?
- 13. Campo de modelo de Django para la clase base abstracta
- 14. Expresión regular por cantidad de dólares en JavaScript
- 15. ¿Cuál es la mejor manera de especificar un key_name para el modelo NDB de App Engine?
- 16. ¿cuál es la mejor manera de representar latice hexagonal
- 17. Django-Socialauth o django-social-auth, ¿cuál es el mejor?
- 18. ¿Cuál es el mejor lugar para las clases de python en un proyecto de Django?
- 19. ¿Cuál es la mejor biblioteca de AJAX para Django?
- 20. ¿Cómo puedo desactivar un campo modelo en una forma Django
- 21. ¿Cuál es la mejor respuesta para la búsqueda de la máxima cantidad posible de una matriz
- 22. Campo Django modelo predeterminado basado en otro campo en el mismo modelo
- 23. ¿Cuál es la mejor solución de Wiki para Django?
- 24. django representación de días de la semana en el modelo
- 25. ¿Cuál es la mejor de las aplicaciones de eventos django?
- 26. Django Forms: campo de modelo oculto?
- 27. ¿Cuál es la mejor manera de representar una lista inmutable en .NET?
- 28. django: la mejor forma de obtener el modelo de una instancia de ese modelo
- 29. Instancia instancia de modelo con manytomany campo en Django
- 30. Use Float o Decimal para la aplicación de contabilidad ¿Cantidad en dólares?
A menos que desee representar la deuda nacional, en cuyo caso max_digits tiene que ser> 20 –
decimal_places = 2 no es necesariamente correcto si necesita esto para admitir otras monedas. Algunas monedas tienen tres decimales, y Bitcoin tiene un whooping 8. –
Creo que este ejemplo es correcto para casi todas las monedas. Para representar monedas como Bitcoin, creo que es mucho mejor usar un campo entero para guardar la cantidad en satoshis, y luego mostrarlo al usuario final en la representación que desee (BTC, mBTC, etc.) – jion