diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-04-12 02:00:58 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2009-04-12 02:00:58 +0000 |
| commit | a584a6b40f8f685f5809eb77de2c7be0b150aeda (patch) | |
| tree | 0930de38039daff5b5358879f73dfb2356ad83a2 /django | |
| parent | 1aa0d1b4a696c51c97a4b2294488e51354350678 (diff) | |
Fixed #10071 -- Changed some internal database data representations.
We now pass numbers used in data queries as actualy numbers (integers) to the
database backends, rather than string forms. This is easier for some of the
less flexible backeds.
Based on a patch from Leo Soto and Ramiro Morales.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10530 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/backends/postgresql/operations.py | 5 | ||||
| -rw-r--r-- | django/db/backends/sqlite3/base.py | 4 | ||||
| -rw-r--r-- | django/db/models/fields/__init__.py | 6 |
3 files changed, 7 insertions, 8 deletions
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py index 14bd976d8b..35824609b2 100644 --- a/django/db/backends/postgresql/operations.py +++ b/django/db/backends/postgresql/operations.py @@ -27,9 +27,8 @@ class DatabaseOperations(BaseDatabaseOperations): def date_extract_sql(self, lookup_type, field_name): # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT if lookup_type == 'week_day': - # Using EXTRACT(), PostgreSQL days are indexed as Sunday=0, Saturday=6. - # If we instead us TO_CHAR, they're indexed with Sunday=1, Saturday=7 - return "TO_CHAR(%s, 'D')" % field_name + # For consistency across backends, we return Sunday=1, Saturday=7. + return "EXTRACT('dow' FROM %s) + 1" % field_name else: return "EXTRACT('%s' FROM %s)" % (lookup_type, field_name) diff --git a/django/db/backends/sqlite3/base.py b/django/db/backends/sqlite3/base.py index 8a4c072896..f9be87d00a 100644 --- a/django/db/backends/sqlite3/base.py +++ b/django/db/backends/sqlite3/base.py @@ -211,9 +211,9 @@ def _sqlite_extract(lookup_type, dt): except (ValueError, TypeError): return None if lookup_type == 'week_day': - return unicode((dt.isoweekday() % 7) + 1) + return (dt.isoweekday() % 7) + 1 else: - return unicode(getattr(dt, lookup_type)) + return getattr(dt, lookup_type) def _sqlite_date_trunc(lookup_type, dt): try: diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index 0c9aa59425..f580384b80 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -500,10 +500,10 @@ class DateField(Field): curry(cls._get_next_or_previous_by_FIELD, field=self, is_next=False)) def get_db_prep_lookup(self, lookup_type, value): - # For "__month", "__day", and "__week_day" lookups, convert the value - # to a string so the database backend always sees a consistent type. + # For "__month", "__day", and "__week_day" lookups, convert the value + # to an int so the database backend always sees a consistent type. if lookup_type in ('month', 'day', 'week_day'): - return [force_unicode(value)] + return [int(value)] return super(DateField, self).get_db_prep_lookup(lookup_type, value) def get_db_prep_value(self, value): |
