summaryrefslogtreecommitdiff
path: root/django/forms/models.py
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-10-05 18:21:56 -0400
committerTim Graham <timograham@gmail.com>2015-10-05 19:19:09 -0400
commit6bc8bdf55ae71482ee3cd6c1ab157404c2e4ec5c (patch)
tree2dac9d9e3462becd63a22458621362b021d7fa9f /django/forms/models.py
parent3429dfe11df8c7ac59255320c6d34609570345c3 (diff)
[1.9.x] Fixed #25496 -- Made ModelChoiceField respect prefetch_related().
Backport of 6afa6818fcf25665bbf61f0921c8c8c6fa8f223e from master
Diffstat (limited to 'django/forms/models.py')
-rw-r--r--django/forms/models.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index ac8bd1c860..938535bf6a 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1102,7 +1102,9 @@ class ModelChoiceIterator(object):
def __iter__(self):
if self.field.empty_label is not None:
yield ("", self.field.empty_label)
- for obj in self.queryset.iterator():
+ # Can't use iterator() when queryset uses prefetch_related()
+ method = 'all' if self.queryset._prefetch_related_lookups else 'iterator'
+ for obj in getattr(self.queryset, method)():
yield self.choice(obj)
def __len__(self):