如何在forms.ModelChoiceField上定义属性?

时间:2012-07-23 17:23:14

标签: django

在我的ModelForm中,我创建了一个未直接绑定到模型上的任何内容的下拉列表。因此,我在实例化时传递了它的查询集。

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 = '')  

这很好用。但是,我如何为它指定一些属性?

对于其他模型绑定小部件,我通常在Meta中执行此操作:

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'

肯定有办法......

1 个答案:

答案 0 :(得分:25)

attrs仅对小部件有效,而不是字段。尝试:

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