summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2009-04-12 02:00:58 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2009-04-12 02:00:58 +0000
commita584a6b40f8f685f5809eb77de2c7be0b150aeda (patch)
tree0930de38039daff5b5358879f73dfb2356ad83a2 /django
parent1aa0d1b4a696c51c97a4b2294488e51354350678 (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.py5
-rw-r--r--django/db/backends/sqlite3/base.py4
-rw-r--r--django/db/models/fields/__init__.py6
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):