46

フォームにパラメーターを渡すにはどうすればよいですか?

someView()..
    form = StylesForm(data_dict) # I also want to pass in site_id here.

class StylesForm(forms.Form):
    # I want access to site_id here
4

3 に答える 3

60

次のように、フォームの __init__ メソッドを定義する必要があります。

class StylesForm(forms.Form):
    def __init__(self,*args,**kwargs):
        self.site_id = kwargs.pop('site_id')
        super(StylesForm,self).__init__(*args,**kwargs)

もちろん、オブジェクトが作成されるまで self.site_id にアクセスすることはできないため、次の行:

     height = forms.CharField(widget=forms.TextInput(attrs={'size':site_id}))

意味がありません。フォームが作成された後、属性をウィジェットに追加する必要があります。次のようなことを試してください:

class StylesForm(forms.Form):
    def __init__(self,*args,**kwargs):
        self.site_id = kwargs.pop('site_id')
        super(StylesForm,self).__init__(*args,**kwargs)
        self.fields['height'].widget = forms.TextInput(attrs={'size':site_id})

    height = forms.CharField()

(未検証)

于 2013-02-02T08:24:45.010 に答える