2012-07-23 10 views
5

Dentro de mi ModelForm he creado un menú desplegable que no está vinculado a nada en el modelo directamente. Por lo tanto, transfiero el conjunto de consulta en la instanciación.Cómo definir atributos en forms.ModelChoiceField?

class CallsForm(ModelForm): 
    def __init__(self, company, *args, **kwargs): 
     super(CallsForm, self).__init__(*args, **kwargs)   
     self.fields['test_1'].queryset = company.deal_set.all() 

    test_1  = forms.ModelChoiceField(queryset = '') 

Esto funciona bien. Sin embargo, ¿cómo especifico algunos atributos para ello?

Para los otros con destino a-modelo de widgets que suelo hacer esto en Meta:

class Meta: 
     model = Conversation 
     widgets = { 
        'notes': forms.Textarea(attrs={'class': 'red'}),      
        }     

Pero por encima de que en mi caso no tendría ningún sentido.

Traté de establecer los atributos sobre la instanciación sin suerte.

test_1  = forms.ModelChoiceField(attrs={'class':'hidden'}, queryset = '') 

pero dice: __init__() got an unexpected keyword argument 'attrs'

Seguramente debe haber una manera ...

Respuesta

22

attrs sólo es válido en widgets, no campos. Pruebe:

test_1 = forms.ModelChoiceField(queryset = '', widget=forms.Select(attrs={'class':'hidden'})) 
Cuestiones relacionadas