Isso foi corrigido no Django 1.9 com form_kwargs .
Eu tenho um formulário do Django que se parece com isso:
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)
Eu chamo este formulário com algo assim:
form = ServiceForm(affiliate=request.affiliate)
Onde request.affiliate
está o usuário conectado. Isso funciona como pretendido.
Meu problema é que agora quero transformar esse formulário único em um formset. O que não consigo descobrir é como posso passar as informações do afiliado para os formulários individuais ao criar o conjunto de formulários. De acordo com os documentos para criar um formset, preciso fazer algo assim:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
E então eu preciso criá-lo assim:
formset = ServiceFormSet()
Agora, como posso passar o afiliado = request.affiliate para os formulários individuais dessa maneira?