Aggregates (Min, Max) for CharField fails with Postgresql
|Reported by:||wejaay||Owned by:||wogan|
|Component:||Database layer (models, ORM)||Version:||master|
|Severity:||Normal||Keywords:||aggregate, postgresql, charfield|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||yes||Patch needs improvement:||yes|
If you try to do aggregate on a CharField using with Min or Max, it works fine in sqlite3 but fails in PostgresSQL. I have version 9.0 of postgres and latest dev version of django.
The error occurs because Django is trying to convert the string to float in http://code.djangoproject.com/browser/django/trunk/django/db/backends/__init__.py?rev=9742, line number 399.
Thats the version where this code was first introduced and as far as I can tell its been broken all the way from then to most recent version http://code.djangoproject.com/browser/django/trunk/django/db/backends/__init__.py, line 553.
One fix that seems to work is to change line 549 from elif internal_type in ('DateField', 'DateTimeField', 'TimeField'): to elif internal_type in ('DateField', 'DateTimeField', 'TimeField', 'CharField'):
I dont know if that has other side effects. If I am doing something wrong, please let me know.
Change History (7)
comment:1 Changed 3 years ago by russellm
- Has patch set
- Needs documentation unset
- Needs tests set
- Patch needs improvement set
- Triage Stage changed from Unreviewed to Accepted
comment:2 Changed 3 years ago by wogan
- Owner changed from nobody to wogan
- Status changed from new to assigned
- Version changed from 1.2 to SVN