Ce problème a été corrigé dans Django 1.9 avec form_kwargs .
J'ai un formulaire Django qui ressemble à ceci:
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)
J'appelle ce formulaire avec quelque chose comme ceci:
form = ServiceForm(affiliate=request.affiliate)
Où request.affiliate
est l'utilisateur connecté. Cela fonctionne comme prévu.
Mon problème est que je veux maintenant transformer ce formulaire unique en un formset. Ce que je ne peux pas comprendre, c'est comment je peux transmettre les informations d'affiliation aux formulaires individuels lors de la création du formset. Selon la documentation, pour créer un formulaire à partir de cela, je dois faire quelque chose comme ceci:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
Et puis j'ai besoin de le créer comme ceci:
formset = ServiceFormSet()
Maintenant, comment puis-je transmettre affiliate = request.affiliate aux formulaires individuels de cette façon?