これはDjango 1.9でform_kwargsを使用して修正されました。
次のようなDjangoフォームがあります。
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)
私はこのフォームを次のようなもので呼び出します:
form = ServiceForm(affiliate=request.affiliate)
request.affiliate
ログインしているユーザーはどこですか。これは意図したとおりに機能します。
私の問題は、この単一のフォームをフォームセットにしたいということです。私が理解できないのは、フォームセットの作成時にアフィリエイト情報を個々のフォームに渡す方法です。ドキュメントからこれからフォームセットを作成するために、私はこのようなことをする必要があります:
ServiceFormSet = forms.formsets.formset_factory(ServiceForm, extra=3)
そして、私はこのようにそれを作成する必要があります:
formset = ServiceFormSet()
このようにして、どうすればaffiliate = request.affiliateを個々のフォームに渡すことができますか?