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

Django 如何在forms.ModelChoiceField上定义属性?,django,Django,在我的模型表单中,我创建了一个下拉列表,它不直接绑定到模型上的任何内容。因此,我在实例化时为它传递查询集 class CallsForm(ModelForm): def __init__(self, company, *args, **kwargs): super(CallsForm, self).__init__(*args, **kwargs) self.fields['test_1'].queryset = company.dea

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

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 = '')   
但是它说:
\uuuu init\uuuuu()得到了一个意外的关键字参数“attrs”


肯定有办法…

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

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

如果您想将数据传递给您不能完全控制的代码(
admin
),您可以在
某种形式中进行传递。
self.fields[name].widget.attrs={…}
(或
更新
)。或者如果是
django.contrib.admin.widgets.RelatedFieldWidgetWrapper
,则为
widget.widget.attrs={…}