2012-07-23 5 views
5

Dans mon ModelForm j'ai créé une liste déroulante qui n'est liée à rien directement sur le modèle. Je passe donc dans le jeu de requête pour l'instanciation.Comment définir des attributs sur 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 = '') 

Cela fonctionne très bien. Cependant, comment puis-je spécifier certains attributs pour cela?

Pour les autres modèles lié-widgets que je fais habituellement ceci dans Meta:

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

Mais il primordial dans mon cas ne serait pas logique.

J'ai essayé de définir les attributs lors de l'instanciation sans aucune chance.

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

mais il dit: __init__() got an unexpected keyword argument 'attrs'

Il doit sûrement y avoir un moyen ...

Répondre

22

attrs est valable uniquement sur les widgets, pas de champs. Essayez:

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