>>> from django.forms import BaseFormSet
>>> from django.forms import formset_factory
>>> from myapp.forms import ArticleForm
>>> class MyArticleForm(ArticleForm):
... def __init__(self, *args, user, **kwargs):
... self.user = user
... super().__init__(*args, **kwargs)
>>> ArticleFormSet = formset_factory(MyArticleForm)
>>> formset = ArticleFormSet(form_kwargs={'user': request.user})
The form_kwargs may also depend on the specific form instance.
The formset base class provides a get_form_kwargs method.
The method takes a single argument - the index of the form in the formset.
The index is None for the empty_form:
>>> from django.forms import BaseFormSet
>>> from django.forms import formset_factory
>>> class BaseArticleFormSet(BaseFormSet):
... def get_form_kwargs(self, index):
... kwargs = super().get_form_kwargs(index)
... kwargs['custom_kwarg'] = index
... return kwargs
Я взял приведенный выше код из документации Django, в документации говорится, что form_kwargs, который является словарем, передаваемым при создании экземпляра FormSet, может зависеть от конкретного c экземпляра, но не говорит, как
Когда get_form_kwargs () вызывается в классе FormSet с индексом, вызывается метод его родительского класса get_form_kwargs () для извлечения предположительно kwargs из экземпляра формы
Где определены kwargs для экземпляра формы?