Questo problema è stato risolto in Django 1.9 con form_kwargs .
Ho un Django Form che assomiglia a questo:
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)
Chiamo questo modulo con qualcosa del genere:
form = ServiceForm(affiliate=request.affiliate)
Dove request.affiliate
l'utente che ha effettuato l'accesso. Funziona come previsto.
Il mio problema è che ora voglio trasformare questo singolo modulo in un formset. Quello che non riesco a capire è come posso trasmettere le informazioni di affiliazione ai singoli moduli durante la creazione del formset. Secondo i documenti per fare un formset da questo ho bisogno di fare qualcosa del genere:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
E poi ho bisogno di crearlo in questo modo:
formset = ServiceFormSet()
Ora come posso passare affiliate = request.affiliate ai singoli moduli in questo modo?