Devo memorizzare un importo in dollari USA in un campo di un modello Django. Qual è il miglior tipo di campo del modello da utilizzare? Devo essere in grado di inserire questo valore dall'utente (con controllo degli errori, voglio solo un numero preciso in centesimi), formattarlo per l'output agli utenti in luoghi diversi e usarlo per calcolare altri numeri.Qual è il miglior campo del modello django da utilizzare per rappresentare un importo in dollari USA?
risposta
A decimal field è la scelta giusta per il valore di valuta .
Si avrà un aspetto simile:
credit = models.DecimalField(max_digits=6, decimal_places=2)
field = models.DecimalField(max_digits=8, decimal_places=2)
Nota che MAX_DIGITS dovrebbe essere> = decimal_places. Questa impostazione esempio potrebbe consentire un valore fino a: 999.999,99
Documenti: https://docs.djangoproject.com/en/1.10/ref/models/fields/#decimalfield
Definire un decimale e restituire un $ segno di fronte il valore.
price = models.DecimalField(max_digits=8, decimal_places=2)
@property
def price(self):
return "$%s" % self.price
Ti rendi conto che tu hai appena creato un ciclo infinito di ricorsione nella tua proprietà, giusto? –
field = models.DecimalField(max_digits=8, decimal_places=2)
dovrebbe creare un campo per PostgreSQL come:
"field" numeric(8, 2) NOT NULL
Qual è il modo migliore per PostgreSQL memorizzato importo in dollari USA.
Se avete bisogno di un tipo di campo PostgreSQL "doppia precisione", allora avete bisogno di fare il modello django:
field = models.FloatField()
Le altre risposte sono 100% diritto, ma non sono molto pratico come avrai ancora gestire manualmente l'uscita, la formattazione ecc
io suggerirei di usare 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,
)
funziona automaticamente da modelli:
{{ somemodel.some_currency }}
uscita:
$123.00
Ha un backend potente tramite python-money ed è essenzialmente un rimpiazzo per i campi decimali standard.
* (con controllo degli errori, desidera solo un numero preciso in centesimi), formattarlo per l'output agli utenti in luoghi diversi e utilizzarlo per calcolare altri numeri. * In questi casi, utilizzare 'DecimalField' è più pratico. E credo che sia applicato per la maggior parte delle persone. Usando 'django-money' come hanno evidenziato, includi la gestione ** Valuta **.Quindi questo è più per progetti che coinvolgono transazioni come siti di e-commerce, gateway di pagamento, valuta digitale, banche, ecc ... – Yeo
Direi che dal momento che stanno lavorando con l'USD - una valuta - ha più senso usa una libreria di gestione della valuta come django-money (python-money) in quanto rende tutto funzionante come ti aspetteresti e ti consente di apportare modifiche alle funzioni future. La domanda originale dice che hanno bisogno di formattazione e calcolo (come hai citato) e per questo è meglio usare una libreria di valute invece di un semplice campo decimale. –
- 1. Java: doppio valore del formato come importo in dollari
- 2. Estratto importo in dollari da stringa - regex in PHP
- 3. Come rappresentare "{{" in un modello django?
- 4. Espressione regolare per importo in dollari in JavaScript
- 5. Qual è il miglior personaggio per rappresentare spazi vuoti in un URL?
- 6. Qual è il miglior backend CouchDB per Django?
- 7. Qual è il miglior server socket.io da utilizzare con Django - gevent o tornadio2?
- 8. Qual è il miglior modello C# per implementare una gerarchia con un enum?
- 9. qual è il modo per rappresentare un UNICHAR in lua
- 10. Campo importo personalizzato striscia
- 11. Campo nascosto in Django Modello
- 12. Qual è il miglior editor per AutoHotkey?
- 13. Come impostare il campo del modello django per nome?
- 14. Qual è il modo migliore per convertire i dollari (Big Decimal) in Cents (Integer) in java?
- 15. Impossibile utilizzare una classe Meta del modello Django ereditario per configurare un campo definito in un modello astratto ereditato
- 16. Qual è il miglior controllo del browser Web da utilizzare nell'applicazione Windows Form?
- 17. Il miglior modello per un'implementazione NIO?
- 18. Django: Ordina un modello da un campo molti-a-molti
- 19. Django: usa LayerMapping per aggiornare un modello esistente?
- 20. Come sovrascrivere il campo del modello utente predefinito in Django?
- 21. Ottieni il nome del campo primario del modello Django
- 22. Modello Django: campo NULLable
- 23. Qual è il miglior sostituto per FlowDocument in Silverlight?
- 24. Campo modello Blob Django
- 25. Qual è il miglior database da utilizzare con un programma java?
- 26. Qual è il miglior telefono Android da ottenere come sviluppatore
- 27. Qual è il miglior modulo Drupal Survey
- 28. Ottenere il campo modulo Django dal campo modello
- 29. Qual è il miglior database da utilizzare per un'applicazione desktop Java
- 30. Qual è il miglior eBook per un principiante di Hibernate?
A meno che non si desideri rappresentare il debito nazionale, nel qual caso max_digits deve essere> 20 –
decimal_places = 2 non è necessariamente corretto se è necessario per supportare altre valute. Alcune valute hanno tre cifre decimali e Bitcoin ha un grido 8. –
Penso che questo esempio sia corretto quasi per tutte le valute. Per rappresentare le valute come Bitcoin, penso sia molto meglio usare un campo intero per salvare la quantità in satoshis, e quindi mostrarlo all'utente finale nella rappresentazione che desideri (BTC, mBTC, ecc.) – jion