2012-05-18 19 views
15

इम मेरी admin.py में ऑपरेशन परिणाम को बचाने की कोशिश और मैं यह त्रुटि है:प्रमात्रण परिणाम वर्तमान संदर्भ के लिए बहुत अधिक अंक हैं

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 
     ... 

क्या इसका मतलब ?, मेरे सभी मॉडल क्षेत्र हैं दशमलव किसी भी मदद कृपया

धन्यवाद

+0

क्या [यह] (http://stackoverflow.com/questions/2051575/django-combine-models-decimalfield-with-forms-error-quantize-result-has-too) मदद करता है? – okm

+0

@okm मैंने कोशिश की और मदद नहीं की :( – Asinox

उत्तर

20

मैं 'max_digits' फ़ील्ड विकल्प में वृद्धि से इस समस्या को हल करने में सक्षम था।

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

यह काफी बड़ी सबसे लंबे समय तक नंबर आप सहेजना चाहते हैं फिट करने के लिए बनाने के लिए सुनिश्चित करें।

कि काम नहीं करता है भी परिशुद्धता से बड़ा निर्धारित करने की आवश्यकता हो सकता है:

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

पूरे संदर्भ मापदंडों के लिए अजगर दशमलव दस्तावेज़ देखें।

+2

नोट, यह आदर्श नहीं है क्योंकि यह हर जगह संदर्भ को बदलता है, जो 11 से अधिक अंकों का उपयोग करने वाले अन्य कोड को तोड़ सकता है। – Cerin

संबंधित मुद्दे