Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Replaced 'next' testing by collections.Iterator testing.

The new construct is also Python 3 compatible (where 'next' has
been renamed to '__next__').
  • Loading branch information...
commit df7a65ac4ba36dd155e80b8bcfe607390976ad47 1 parent d5c7f9e
Claude Paroz claudep authored
3  django/db/models/fields/__init__.py
View
@@ -1,3 +1,4 @@
+import collections
import copy
import datetime
import decimal
@@ -436,7 +437,7 @@ def bind(self, fieldmapping, original, bound_field_class):
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:
3  django/db/models/sql/where.py
View
@@ -4,6 +4,7 @@
from __future__ import absolute_import
+import collections
import datetime
from itertools import repeat
@@ -49,7 +50,7 @@ def add(self, data, connector):
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)
Please sign in to comment.
Something went wrong with that request. Please try again.