2012-01-06 11 views
7

Tengo un formulario en Django que tiene este aspectoDjango forma: nombre de 'yo' no está definido

class FooForm(forms.ModelForm): 
    foo_field = forms.ModelChoiceField(widget=FooWidget(def_arg=self.data)) 

Cuando llamo self.data, Python lanza la excepción name 'self' is not defined. ¿Cómo puedo acceder al self allí?

Respuesta

7

Como han respondido otros, no hay self para referirse a ese punto. Algo como esto funciona sin embargo:

class FooForm(forms.ModelForm): 
    foo_field = forms.ModelChoiceField() 

    def __init__(self, *args, **kwargs): 
     super(FooForm, self).__init__(*args, **kwargs) 
     self.fields['foo_field'].initial = self.data 

También puede acceder el widget en __init__ través self.fields['foo_field'].widget

2

No se puede; no hay self allí. Tendrá que hacer una configuración adicional en __init__().

5

no

en el momento en que se crea la clase puede, no hay ninguna instancia de objeto. para este tipo de comportamiento dinámico, debe anular el método __init__ y crear el campo (o cambiar algunos de sus parámetros) allí

Cuestiones relacionadas