summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-05-22 20:26:46 +0200
committerClaude Paroz <claude@2xlibre.net>2012-05-22 20:37:38 +0200
commitdf7a65ac4ba36dd155e80b8bcfe607390976ad47 (patch)
tree19c627b4782dc59b8ec384f1298670701e7cbb1e
parentd5c7f9efc3702888b556cbf932116421b464e8b8 (diff)
Replaced 'next' testing by collections.Iterator testing.
The new construct is also Python 3 compatible (where 'next' has been renamed to '__next__').
-rw-r--r--django/db/models/fields/__init__.py3
-rw-r--r--django/db/models/sql/where.py3
2 files changed, 4 insertions, 2 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index f694958692..50976db339 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -1,3 +1,4 @@
+import collections
import copy
import datetime
import decimal
@@ -436,7 +437,7 @@ class Field(object):
return bound_field_class(self, fieldmapping, original)
def _get_choices(self):
- if hasattr(self._choices, 'next'):
+ if isinstance(self._choices, collections.Iterator):
choices, self._choices = tee(self._choices)
return choices
else:
diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py
index 0bc3638b80..5515bc4f83 100644
--- a/django/db/models/sql/where.py
+++ b/django/db/models/sql/where.py
@@ -4,6 +4,7 @@ Code to manage the creation and SQL rendering of 'where' constraints.
from __future__ import absolute_import
+import collections
import datetime
from itertools import repeat
@@ -49,7 +50,7 @@ class WhereNode(tree.Node):
return
obj, lookup_type, value = data
- if hasattr(value, '__iter__') and hasattr(value, 'next'):
+ if isinstance(value, collections.Iterator):
# Consume any generators immediately, so that we can determine
# emptiness and transform any non-empty values correctly.
value = list(value)