Skip to content


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/
@@ -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
3  django/db/models/sql/
@@ -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):
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.