2012-05-18 5 views
15

Nel tentativo di salvare il risultato dell'operazione nel mio admin.py e ho questo errore:risultato quantizzazione ha troppe cifre per contesto attuale

quantize result has too many digits for current context

.... 
def save_model(self, request, obj, form, change): 

    usuario_libra = obj.consignee.membresia.libra 
    valores   = Valores.objects.get(pk=1) 
    vtasa   = valores.tasa 
    vaduana   = valores.aduana 
    vgestion  = valores.gestion 
    vfee   = valores.fee 
    vcombustible = valores.combustible 

    trans_aereo  = obj.peso * usuario_libra * vtasa 
    aduana   = (obj.peso * vaduana)*vtasa 
    fee_airpot  = (obj.peso * vfee)*vtasa 
    combustible  = (obj.peso * vcombustible)*vtasa 
    itbis   = (trans_aereo+vgestion)*Decimal(0.16) 
    total   = trans_aereo + vgestion + aduana + fee_airpot + combustible + itbis 

    if not obj.id: 
     obj.total = total 
     ... 

cosa questa media ?, tutti i miei campi di modello sono decimale Qualsiasi aiuto per favore

Grazie

+0

Fa [questo] (http://stackoverflow.com/questions/2051575/django-combine-models-decimalfield-with-forms-error-quantize-result-has-too) help? – okm

+0

@okmovo ho provato e non aiuto :( – Asinox

risposta

20

sono stato in grado di risolvere questo problema aumentando l'opzione del campo 'MAX_DIGITS'.

class Myclass(models.Model): 
    my_field = models.DecimalField(max_digits=11, decimal_places=2, blank=True, null=True) 

Assicurarsi di renderlo grande abbastanza da contenere il numero più lungo che si desidera salvare.

Se questo non dovesse funzionare potrebbe anche avere bisogno di impostare la precisione più grande da:

from decimal import getcontext 
    ... 
    getcontext().prec = 11 

Vedere la documentazione decimale pitone per i parametri di contesto completo.

+2

Nota, questo non è l'ideale in quanto cambia il contesto ovunque, che potrebbe infrangere altri codici che utilizzano più di 11 cifre. – Cerin

Problemi correlati