J'ai besoin de stocker un montant en dollars US dans un champ d'un modèle Django. Quel est le meilleur type de champ de modèle à utiliser? Je dois pouvoir demander à l'utilisateur de saisir cette valeur (avec vérification des erreurs, je veux seulement un nombre précis à centimes), la formater pour la sortie aux utilisateurs à différents endroits et l'utiliser pour calculer d'autres nombres.
django
django-models
MikeN
la source
la source
Notez que max_digits doit être> = decimal_places. Cet exemple de paramètre autoriserait une valeur jusqu'à: 999 999,99
Documents: https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield
la source
Les autres réponses sont correctes à 100% mais ne sont pas très pratiques car vous devrez toujours gérer manuellement la sortie, le formatage, etc.
Je suggérerais d'utiliser django-money :
Fonctionne automatiquement à partir de modèles:
Production:
Il a un backend puissant via python-money et c'est essentiellement un remplacement instantané des champs décimaux standard.
la source
DecimalField
est plus pratique. Et je pense que cela s'applique à la plupart des gens. En utilisantdjango-money
comme ils l'ont mis en évidence, incluez la gestion des devises . Il s'agit donc davantage d'un projet impliquant des transactions telles que des sites de commerce électronique, une passerelle de paiement, une monnaie numérique, des services bancaires, etc.Définissez une décimale et renvoyez un signe $ devant la valeur.
la source
Devrait créer un champ pour PostgreSQL comme:
Quel est le meilleur moyen pour PostGreSQL stocké le montant en dollars américains.
Si vous avez besoin d'un champ PostgreSQL de type "double précision", alors vous devez le faire dans le modèle django:
la source