diff options
author | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-04-18 16:14:32 +0000 |
---|---|---|
committer | Boulder Sprinters <boulder-sprinters@djangoproject.com> | 2007-04-18 16:14:32 +0000 |
commit | b38a73e01a4873ef70f7b7b4c9536be0defbbd2d (patch) | |
tree | 6a033b0fe4f7911b8a093d53c9005f508ce4b925 /django/db | |
parent | e558b9aac4e935320c828416d6bb2aae3ed88f36 (diff) | |
download | django-b38a73e01a4873ef70f7b7b4c9536be0defbbd2d.tar.gz |
boulder-oracle-sprint: Improved field type detection in QuerySet.resolve_columns. Now the only case where we have to guess at the field type is when select fields are added with QuerySet.extra.
git-svn-id: http://code.djangoproject.com/svn/django/branches/boulder-oracle-sprint@5024 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db')
-rw-r--r-- | django/db/backends/oracle/base.py | 9 | ||||
-rw-r--r-- | django/db/models/query.py | 5 |
2 files changed, 7 insertions, 7 deletions
diff --git a/django/db/backends/oracle/base.py b/django/db/backends/oracle/base.py index 75005be369..46282c3003 100644 --- a/django/db/backends/oracle/base.py +++ b/django/db/backends/oracle/base.py @@ -294,7 +294,8 @@ def get_query_set_class(DefaultQuerySet): cursor.execute(full_query, params) fill_cache = self._select_related - index_end = len(self.model._meta.fields) + fields = self.model._meta.fields + index_end = len(fields) # so here's the logic; # 1. retrieve each row in turn @@ -305,7 +306,7 @@ def get_query_set_class(DefaultQuerySet): if not rows: raise StopIteration for row in rows: - row = self.resolve_columns(row) + row = self.resolve_columns(row, fields) if fill_cache: obj, index_end = get_cached_row(klass=self.model, row=row, index_start=0, max_depth=self._max_related_depth) @@ -480,12 +481,10 @@ def get_query_set_class(DefaultQuerySet): pass # DateTimeField subclasses DateField so must be checked first. elif isinstance(field, DateField): value = value.date() - elif isinstance(field, TimeField): + elif isinstance(field, TimeField) or (value.year == 1900 and value.month == value.day == 1): value = value.time() elif value.hour == value.minute == value.second == value.microsecond == 0: value = value.date() - elif value.year == 1900 and value.month == value.day == 1: - value = value.time() values.append(value) return values diff --git a/django/db/models/query.py b/django/db/models/query.py index 16c3df5d08..6f899c799a 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -185,7 +185,8 @@ class _QuerySet(object): cursor.execute("SELECT " + (self._distinct and "DISTINCT " or "") + ",".join(select) + sql, params) fill_cache = self._select_related - index_end = len(self.model._meta.fields) + fields = self.model._meta.fields + index_end = len(fields) has_resolve_columns = hasattr(self, 'resolve_columns') while 1: rows = cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE) @@ -193,7 +194,7 @@ class _QuerySet(object): raise StopIteration for row in rows: if has_resolve_columns: - row = self.resolve_columns(row) + row = self.resolve_columns(row, fields) if fill_cache: obj, index_end = get_cached_row(klass=self.model, row=row, index_start=0, max_depth=self._max_related_depth) |