Це було виправлено у Django 1.9 за допомогою form_kwargs .
У мене форма Django виглядає так:
class ServiceForm(forms.Form):
option = forms.ModelChoiceField(queryset=ServiceOption.objects.none())
rate = forms.DecimalField(widget=custom_widgets.SmallField())
units = forms.IntegerField(min_value=1, widget=custom_widgets.SmallField())
def __init__(self, *args, **kwargs):
affiliate = kwargs.pop('affiliate')
super(ServiceForm, self).__init__(*args, **kwargs)
self.fields["option"].queryset = ServiceOption.objects.filter(affiliate=affiliate)
Я називаю цю форму приблизно так:
form = ServiceForm(affiliate=request.affiliate)
Де request.affiliate
зареєстрований користувач. Це працює за призначенням.
Моя проблема полягає в тому, що я зараз хочу перетворити цю єдину форму в набір форматів. Що я не можу зрозуміти - це те, як я можу передавати інформацію про афілійованість до окремих форм під час створення набору форматів. Згідно з документами, щоб зробити набір форматів із цього, мені потрібно зробити щось подібне:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
І тоді мені потрібно створити його так:
formset = ServiceFormSet()
Тепер, як я можу таким чином передати affiliate = request.affiliate до окремих форм?