Zostało to naprawione w Django 1.9 za pomocą form_kwargs .
Mam formularz Django, który wygląda następująco:
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)
Nazywam ten formularz czymś takim:
form = ServiceForm(affiliate=request.affiliate)
Gdzie request.affiliate
jest zalogowany użytkownik. Działa to zgodnie z przeznaczeniem.
Mój problem polega na tym, że chcę teraz przekształcić tę pojedynczą formę w zestaw form. Nie mogę dowiedzieć się, w jaki sposób mogę przekazać informacje o podmiotach stowarzyszonych do poszczególnych formularzy podczas tworzenia zestawu formularzy. Zgodnie z dokumentacją, aby utworzyć z tego formularz, muszę zrobić coś takiego:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
A potem muszę to stworzyć w ten sposób:
formset = ServiceFormSet()
Jak mogę przekazać w ten sposób affiliate = request.affiliate do poszczególnych formularzy?