On Thu, Feb 19, 2009 at 5:24 AM, Alfonso <[email protected]> wrote:
>
> Karen,
>
> Good point - I will certainly use dpaste in the future. Here's the
> traceback, I should have copied that in right from the start:
>
> Traceback:
> [snip]
File "/home/queryclick/webapps/django/lib/python2.5/django/contrib/
> admin/options.py" in save_model
> 376. obj.save()
> File "/home/queryclick/webapps/django/bullet/invoices/models.py" in
> save
> 79. # self.customer.outstanding_amount = Decimal('100.00')
This line points to outstanding_amount being the troublesome field. I find
it a little odd that the line appears to be commented out in the traceback,
but no doubt there is some obvious explanation for that which is escaping me
at the moment.
[snip]
>
File "/home/queryclick/webapps/django/lib/python2.5/django/db/models/
> fields/__init__.py" in get_db_prep_value
> 610. self.max_digits, self.decimal_places)
> File "/home/queryclick/webapps/django/lib/python2.5/django/db/backends/
> __init__.py" in value_to_db_decimal
> 345. return util.format_number(value, max_digits,
> decimal_places)
> File "/home/queryclick/webapps/django/lib/python2.5/django/db/backends/
> util.py" in format_number
> 130. return u'%s' % str(value.quantize(decimal.Decimal(".1")
> ** decimal_places, context=context))
>
>
> Exception Type: TypeError at /admin/invoices/customerinvoice/1/
> Exception Value: unsupported operand type(s) for ** or pow():
> 'Decimal' and 'NoneType'
>
>
And these combined with the message indicate the problem must be that
decimal_places for outstanding_amount is None, since the other argument
involved in the ** (decimal.Decimal(".1")) operation is clearly the
Decimal. Looking back at your models shows that outstanding_field doesn't
have decimal_places (nor max_digits) specified.
Checking the doc, I was surprised to find that these are listed as
"optional" arguments, since I thought they were required. In fact they are
required for syncdb -- if you try to run syncdb on a model specified as you
have your Customer, you will get:
Error: One or more models did not validate:
ttt.customer: "outstanding_amount": DecimalFields require a "decimal_places"
attribute.
ttt.customer: "outstanding_amount": DecimalFields require a "max_digits"
attribute.
So I think the doc is incorrect in listing these as optional.
Did you remove these parameters after creating your tables? (If so, why?)
I think you need to put them back.
Karen
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---