Esto se solucionó en Django 1.9 con form_kwargs .
Tengo un formulario de Django que se ve así:
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)
Llamo a este formulario con algo como esto:
form = ServiceForm(affiliate=request.affiliate)
¿Dónde request.affiliate
está el usuario conectado? Esto funciona según lo previsto.
Mi problema es que ahora quiero convertir este formulario único en un conjunto de formularios. Lo que no puedo entender es cómo puedo pasar la información del afiliado a los formularios individuales al crear el conjunto de formularios. De acuerdo con los documentos para hacer un formulario de esto, necesito hacer algo como esto:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
Y luego necesito crearlo así:
formset = ServiceFormSet()
Ahora, ¿cómo puedo pasar afiliado = request.affiliate a los formularios individuales de esta manera?