From 829dc3c5a64d3fa203b8cc0055e83cf23addfee3 Mon Sep 17 00:00:00 2001 From: Marc Tamlyn Date: Wed, 20 Mar 2013 10:47:56 +0000 Subject: Fixed #20094 - Be more careful when checking for Iterator Python 2.6 has some different behaviour when checking isinstance(foo, collections.Iterator). --- django/db/models/sql/where.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'django/db/models/sql') diff --git a/django/db/models/sql/where.py b/django/db/models/sql/where.py index 754e33292d..42682c342e 100644 --- a/django/db/models/sql/where.py +++ b/django/db/models/sql/where.py @@ -4,7 +4,6 @@ Code to manage the creation and SQL rendering of 'where' constraints. from __future__ import absolute_import -import collections import datetime from itertools import repeat @@ -12,6 +11,7 @@ from django.conf import settings from django.db.models.fields import DateTimeField, Field from django.db.models.sql.datastructures import EmptyResultSet, Empty from django.db.models.sql.aggregates import Aggregate +from django.utils.itercompat import is_iterator from django.utils.six.moves import xrange from django.utils import timezone from django.utils import tree @@ -58,7 +58,7 @@ class WhereNode(tree.Node): if not isinstance(data, (list, tuple)): return data obj, lookup_type, value = data - if isinstance(value, collections.Iterator): + if is_iterator(value): # Consume any generators immediately, so that we can determine # emptiness and transform any non-empty values correctly. value = list(value) -- cgit v1.3