2013-02-02 12 views
14
oluşturmak için geçirin

Bir parametreyi formuma nasıl geçirebilirim? Aşağıdaki Yanıta göreDjango Formları: Parametreyi

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 

Düzenleme:

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})) 

cevap

22

Böyle, formunuzun __init__ yöntemi tanımlamalıdır: Eğer kadar self.site_id erişemez elbette

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

Nesne oluşturuldu, satır:

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

anlamsızdır. Form oluşturulduktan sonra özniteliği widget'a eklemeniz gerekir. Böyle bir şey deneyin:

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() 

+0

nasıl formda site_id erişimin yok (test)? Self.site_id ve site_id'i denedim. Bu bana bir hata veriyor. Kesme noktaları kullandım ve alanın tümüne erişmek için _init_ – user984003

+1

Use self.site_id kullanmadan önce tüm alan tanımlarımdan (site_id kullanmam gerekir) geçtiği anlaşılıyor. __init__ yöntemi başka bir yöntemden önce çağrılır, iki kez kontrol edin. –

+0

"Name 'self' tanımlı değil" tanımlandı " – user984003