summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2016-12-01 18:28:29 -0800
committerJon Dufresne <jon.dufresne@gmail.com>2016-12-02 08:40:24 -0800
commit6abd6c598ea23e0a962c87b0075aa2f79f9ead36 (patch)
treeba0ef77b7887f14cb9a93f7bb1b86685fa6271da /django/forms
parent6d1394182d8c4c02598e0cf47f42a5e86706411f (diff)
Fixed #27563 -- Moved "apply limit_choices_to" code from BaseModelForm to fields_for_model().
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/models.py12
1 files changed, 5 insertions, 7 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 3fadc2e3b5..3d74225434 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -170,6 +170,11 @@ def fields_for_model(model, fields=None, exclude=None, widgets=None,
formfield = formfield_callback(f, **kwargs)
if formfield:
+ # Apply ``limit_choices_to``.
+ if hasattr(formfield, 'queryset') and hasattr(formfield, 'get_limit_choices_to'):
+ limit_choices_to = formfield.get_limit_choices_to()
+ if limit_choices_to is not None:
+ formfield.queryset = formfield.queryset.complex_filter(limit_choices_to)
field_list.append((f.name, formfield))
else:
ignored.append(f.name)
@@ -291,13 +296,6 @@ class BaseModelForm(BaseForm):
data, files, auto_id, prefix, object_data, error_class,
label_suffix, empty_permitted, use_required_attribute=use_required_attribute,
)
- # Apply ``limit_choices_to`` to each field.
- for field_name in self.fields:
- formfield = self.fields[field_name]
- if hasattr(formfield, 'queryset') and hasattr(formfield, 'get_limit_choices_to'):
- limit_choices_to = formfield.get_limit_choices_to()
- if limit_choices_to is not None:
- formfield.queryset = formfield.queryset.complex_filter(limit_choices_to)
def _get_validation_exclusions(self):
"""