Commit a584a6b4 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
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: http://code.djangoproject.com/svn/django/trunk@10530 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 1aa0d1b4
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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)

+2 −2
Original line number Diff line number Diff line
@@ -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:
+3 −3
Original line number Diff line number Diff line
@@ -501,9 +501,9 @@ class DateField(Field):

    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.
        # 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):