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.