From b67bd1b483dfda7901a11a6e323db8a7e00c26c4 Mon Sep 17 00:00:00 2001 From: Aric Coady Date: Mon, 27 Apr 2015 15:23:56 -0700 Subject: [1.8.x] Fixed #24719 -- Restored the ability to use interators as queryset related object filters. Backport of 9c2d8cde77ee6edd407e92f93eacd4624290394f from master --- django/db/models/sql/query.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'django/db/models/sql') diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index 7ba94f205b..387b91a60b 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -8,7 +8,7 @@ all about the internals of models in order to get the information it needs. """ import copy import warnings -from collections import Mapping, OrderedDict +from collections import Iterator, Mapping, OrderedDict from itertools import chain, count, product from string import ascii_uppercase @@ -1167,6 +1167,9 @@ class Query(object): field, sources, opts, join_list, path = self.setup_joins( parts, opts, alias, can_reuse=can_reuse, allow_many=allow_many) + # Prevent iterator from being consumed by check_related_objects() + if isinstance(value, Iterator): + value = list(value) self.check_related_objects(field, value, opts) # split_exclude() needs to know which joins were generated for the -- cgit v1.3