2012-07-23 42 views
5

在我的ModelForm中,我創建了一個不直接綁定到模型上的任何東西的下拉菜單。因此,我在實例化時傳入查詢集。如何在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 = '') 

這工作得很好。但是,我如何爲它指定一些屬性?

對於其他模型結合的小部件,我通常這樣做在元:

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

但在我的情況下覆蓋它根本沒有任何意義。

我試圖在沒有任何運氣的情況下設置實例化的屬性。

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

但它說:__init__() got an unexpected keyword argument 'attrs'

當然必須有辦法......

回答

22

attrs只在小部件,而不是字段的有效。試試:

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