Это было исправлено в 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 отдельным формам таким образом?