Skip to content
Browse files

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: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 1aa0d1b commit a584a6b40f8f685f5809eb77de2c7be0b150aeda @malcolmt malcolmt committed
5 django/db/backends/postgresql/
@@ -27,9 +27,8 @@ def _get_postgres_version(self):
def date_extract_sql(self, lookup_type, field_name):
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
return "EXTRACT('%s' FROM %s)" % (lookup_type, field_name)
4 django/db/backends/sqlite3/
@@ -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
- return unicode(getattr(dt, lookup_type))
+ return getattr(dt, lookup_type)
def _sqlite_date_trunc(lookup_type, dt):
6 django/db/models/fields/
@@ -500,10 +500,10 @@ def contribute_to_class(self, cls, name):
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):

0 comments on commit a584a6b

Please sign in to comment.
Something went wrong with that request. Please try again.