summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-10-27 04:52:12 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-10-27 05:26:53 +0300
commitc159d9cec0baab7bbd04d5d51a92a51e354a722a (patch)
tree082d7cccb47751fdf4037fa9b8e759dd2b45e318
parent2249bd275cbae6b73716bf36f5f36def1bb4222e (diff)
Fixed Oracle failure caused by None converted to '' in select_related case
-rw-r--r--django/db/models/query.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py
index dc1ddf1606..da4c69f362 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1418,8 +1418,15 @@ def get_cached_row(row, index_start, using, klass_info, offset=0):
fields = row[index_start : index_start + field_count]
# If all the select_related columns are None, then the related
# object must be non-existent - set the relation to None.
- # Otherwise, construct the related object.
- if fields == (None,) * field_count:
+ # Otherwise, construct the related object. Also, some backends treat ''
+ # and None equivalently for char fields, so we have to be prepared for
+ # '' values.
+ if connections[using].features.interprets_empty_strings_as_nulls:
+ vals = tuple([None if f == '' else f for f in fields])
+ else:
+ vals = fields
+
+ if vals == (None,) * field_count:
obj = None
else:
if field_names: