Dies wurde in Django 1.9 mit form_kwargs behoben .
Ich habe ein Django-Formular, das so aussieht:
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)
Ich nenne dieses Formular so etwas:
form = ServiceForm(affiliate=request.affiliate)
Wo request.affiliate
ist der angemeldete Benutzer? Dies funktioniert wie vorgesehen.
Mein Problem ist, dass ich dieses einzelne Formular jetzt in ein Formularset verwandeln möchte. Was ich nicht herausfinden kann, ist, wie ich die Partnerinformationen beim Erstellen des Formularsatzes an die einzelnen Formulare weitergeben kann. Laut den Dokumenten muss ich so etwas tun, um daraus ein Formset zu machen:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
Und dann muss ich es so erstellen:
formset = ServiceFormSet()
Wie kann ich nun Affiliate = request.affiliate auf diese Weise an die einzelnen Formulare übergeben?