Ok, thanks a lot for your help Apparently I misunderstood that part, and indeed I replaced it to 20 and 15 leaving again 5 digits.
It should do the trick i'll change it asap. Thanks again. Richard On May 14, 7:38 pm, Karen Tracey <kmtra...@gmail.com> wrote: > On Fri, May 14, 2010 at 8:22 AM, mendes.rich...@gmail.com < > > > > > > mendes...@gmail.com> wrote: > > [snip] > > > The problem i'm having is with the following model class with the > > field value: > > > class Measurement(models.Model): > > measurement_id = models.AutoField("Measurement > > ID",primary_key=True) > > value = models.DecimalField(max_digits=10,decimal_places=5) > > [snip other irrelevant fields] > > > So when i do the following everything works like it should. > > > m = > > > Measurement(value=34555,date=date,assay_ontology=ao,parameter=p,measurement > > _factor=mf,batch=b) > > m.save() > > > But when i add another digit to the value it gives me the following > > error > > m = > > > Measurement(value=345556,date=date,assay_ontology=ao,parameter=p,measuremen > > t_factor=mf,batch=b) > > m.save() > > Yes. You've specified max_digits=10 and decimal_places=5 for value, so the > maximum allowed digits to the left of the decimal point is 10-5=5. (That is, > five of your ten max_digits are always dedicated to decimal_places digits to > the right of the decimal point, so you can only have up to five on the > left.) Here you are trying to store a number that has six digits to the left > of the decimal point, which won't fit in the DecimalField you have > specified. > > Traceback (most recent call last): > > [traceback snipped] > > > File "/usr/lib/python2.4/decimal.py", line 2267, in _raise_error > > raise error, explanation > > InvalidOperation: Rescale > prec > > (Side note more recent Pythons give a somewhat better "explanation": > > InvalidOperation: quantize result has too many digits for current context > > though that still may not be entirely clear....) > > > > > I tried to find out what was going wrong and deleted the complete > > table from the database and did a sycdb with a larger max_digits and > > decimal_places value but that wouldn't help. > > If you want more digits to the left of the decimal point, you need to change > the values of max_digits and decimal_places so that > max_digits-decimal_places is greater than or equal to the number of digits > to you want to allow to the left of the decimal point. Since you have not > said what the new values are that you used, it isn't clear that you > redefined things in a way to allow six digits to the left of the decimal > point. > > > i did some further checking on the database, and it seems that there > > is a database problem. When i insert the same values as described > > above i also get an error stating the following: > > > insert into ratstream_measurement > > values('1143','345556','2008/12/12','1','1','1','5'); > > ERROR: numeric field overflow > > DETAIL: A field with precision 20, scale 15 must round to an absolute > > value less than 10^5. > > From this error message I'd guess you changed max_digits to 20 and > decimal_places to 15. This still only allows for 20-15=5 digits to the left > of the decimal point. > > > It seems something went wrong with the syncdb but i can't figure out > > what, does anyone know what i'm doing wrong and can assist me helping > > to fix the problem. > > If you just want more whole digits, make max_digits higher without changing > decimal_places. You seem to have adjusted both of these values higher in a > way that did not allow for any more whole digits. > > Karen > --http://tracey.org/kmt/ > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group > athttp://groups.google.com/group/django-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.