diff options
| author | Ties Jan Hefting <hello@tiesjan.com> | 2021-08-03 12:27:22 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-08-03 13:12:50 +0200 |
| commit | 4f3acf957918843b4c40ff2edfb929bcfaa3730e (patch) | |
| tree | 18fd457c502af86c06ec5102a6cc42edc18195a0 /docs/topics/forms | |
| parent | 47cb85b542470e1712b5d71b0d3d0ec8c7b0dbdc (diff) | |
Fixed #32984 -- Allowed customizing a deletion field widget in formsets.
Diffstat (limited to 'docs/topics/forms')
| -rw-r--r-- | docs/topics/forms/formsets.txt | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/docs/topics/forms/formsets.txt b/docs/topics/forms/formsets.txt index 0281b6a4d6..30979edae4 100644 --- a/docs/topics/forms/formsets.txt +++ b/docs/topics/forms/formsets.txt @@ -636,6 +636,49 @@ On the other hand, if you are using a plain ``FormSet``, it's up to you to handle ``formset.deleted_forms``, perhaps in your formset's ``save()`` method, as there's no general notion of what it means to delete a form. +:class:`~django.forms.formsets.BaseFormSet` also provides a +:attr:`~django.forms.formsets.BaseFormSet.deletion_widget` attribute and +:meth:`~django.forms.formsets.BaseFormSet.get_deletion_widget` method that +control the widget used with +:attr:`~django.forms.formsets.BaseFormSet.can_delete`. + +``deletion_widget`` +^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 4.0 + +.. attribute:: BaseFormSet.deletion_widget + +Default: :class:`~django.forms.CheckboxInput` + +Set ``deletion_widget`` to specify the widget class to be used with +``can_delete``:: + + >>> from django.forms import BaseFormSet, formset_factory + >>> from myapp.forms import ArticleForm + >>> class BaseArticleFormSet(BaseFormSet): + ... deletion_widget = HiddenInput + + >>> ArticleFormSet = formset_factory(ArticleForm, formset=BaseArticleFormSet, can_delete=True) + +``get_deletion_widget`` +^^^^^^^^^^^^^^^^^^^^^^^ + +.. versionadded:: 4.0 + +.. method:: BaseFormSet.get_deletion_widget() + +Override ``get_deletion_widget()`` if you need to provide a widget instance for +use with ``can_delete``:: + + >>> from django.forms import BaseFormSet, formset_factory + >>> from myapp.forms import ArticleForm + >>> class BaseArticleFormSet(BaseFormSet): + ... def get_deletion_widget(self): + ... return HiddenInput(attrs={'class': 'deletion'}) + + >>> ArticleFormSet = formset_factory(ArticleForm, formset=BaseArticleFormSet, can_delete=True) + ``can_delete_extra`` -------------------- |
