diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2016-12-01 18:28:29 -0800 |
|---|---|---|
| committer | Jon Dufresne <jon.dufresne@gmail.com> | 2016-12-02 08:40:24 -0800 |
| commit | 6abd6c598ea23e0a962c87b0075aa2f79f9ead36 (patch) | |
| tree | ba0ef77b7887f14cb9a93f7bb1b86685fa6271da /django/forms | |
| parent | 6d1394182d8c4c02598e0cf47f42a5e86706411f (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.py | 12 |
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): """ |
