Подтвердить что ты не робот

Django Forms: передать параметр в форму

Как передать параметр в мою форму?

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

Изменить, на основе ответа ниже:

someView()..
    form = StylesForm(data_dict, site_id = 1)

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

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

Ответ 1

Вы должны определить метод __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()

(не проверено)