diff options
| author | Sergei Maertens <sergei@maykinmedia.nl> | 2015-06-04 12:47:43 +0200 |
|---|---|---|
| committer | Sergei Maertens <sergei@maykinmedia.nl> | 2015-06-04 15:13:55 +0200 |
| commit | 238e2ac3690755d0e6c2dfca815e2b6f84a47f6e (patch) | |
| tree | e7147d51bb64e769b7c7030e0cc00319a2d6c5f7 /django/forms/formsets.py | |
| parent | 57dbc87ade5533d78089690ec7795034ff69177a (diff) | |
Fixed #18166 -- Added form_kwargs support to formsets.
By specifying form_kwargs when instantiating the formset, or overriding
the `get_form_kwargs` method on a formset class, you can pass extra
keyword arguments to the underlying `Form` instances.
Includes tests and documentation update.
Diffstat (limited to 'django/forms/formsets.py')
| -rw-r--r-- | django/forms/formsets.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/django/forms/formsets.py b/django/forms/formsets.py index eafe35720f..444c84c9d4 100644 --- a/django/forms/formsets.py +++ b/django/forms/formsets.py @@ -54,13 +54,14 @@ class BaseFormSet(object): A collection of instances of the same Form class. """ def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, - initial=None, error_class=ErrorList): + initial=None, error_class=ErrorList, form_kwargs=None): self.is_bound = data is not None or files is not None self.prefix = prefix or self.get_default_prefix() self.auto_id = auto_id self.data = data or {} self.files = files or {} self.initial = initial + self.form_kwargs = form_kwargs or {} self.error_class = error_class self._errors = None self._non_form_errors = None @@ -139,9 +140,16 @@ class BaseFormSet(object): Instantiate forms at first property access. """ # DoS protection is included in total_form_count() - forms = [self._construct_form(i) for i in range(self.total_form_count())] + forms = [self._construct_form(i, **self.get_form_kwargs(i)) + for i in range(self.total_form_count())] return forms + def get_form_kwargs(self, index): + """ + Return additional keyword arguments for each individual formset form. + """ + return self.form_kwargs.copy() + def _construct_form(self, i, **kwargs): """ Instantiates and returns the i-th form instance in a formset. @@ -184,6 +192,7 @@ class BaseFormSet(object): auto_id=self.auto_id, prefix=self.add_prefix('__prefix__'), empty_permitted=True, + **self.get_form_kwargs(None) ) self.add_fields(form, None) return form |
