Yeah, I'm aware of the distinction between the types -- just wasn't
paying enough attention when I added the default and the filter, and
had to back up and take a second look when the filter started throwing
exceptions.  So basically it's a weird artifact of how defaults are
handled by the ORM?

On May 11, 3:11 pm, Shawn Milochik <sh...@milochik.com> wrote:
> On 05/11/2011 03:01 PM, Nan wrote:
>
> > Using Django 1.2.3, I recently declared a DecimalField on a model, and
> > it happily accepts a float as its default value, but it won't filter
> > on a float (it throws a TypeError instead).  Is there a reason for
> > this inconsistency?
>
> DecimalField subclasses Field, which forces the return value into
> unicode before returning it. This would explain why it accepts a default
> value of a float, but it's still technically incorrect to provide a
> float as a default value for a DecimalField.
>
> It is impossible to use a floating-point number to look up a Decimal,
> just because it is. That's why you can't look it up.
>
> It does look like a bit of a discrepancy, but the answer is that you
> should never be using floats with Decimal or DecimalField objects
> anyway. Even if it appears to work, there's always a very real chance
> that you think you're putting into your database isn't actually what
> you're putting into your database. Either pass a Decimal object or a
> string as the default value to your DecimalField.
>
> Shawn
>
> http://code.djangoproject.com/browser/django/trunk/django/db/models/f...

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@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.

Reply via email to