From 6bc8bdf55ae71482ee3cd6c1ab157404c2e4ec5c Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 5 Oct 2015 18:21:56 -0400 Subject: [1.9.x] Fixed #25496 -- Made ModelChoiceField respect prefetch_related(). Backport of 6afa6818fcf25665bbf61f0921c8c8c6fa8f223e from master --- django/forms/models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'django/forms') 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): -- cgit v1.3