【问题标题】:How to define attributes on forms.ModelChoiceField?如何在 forms.ModelChoiceField 上定义属性?
【发布时间】:2016-11-16 23:11:58
【问题描述】:

在我的 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'

肯定有办法……

【问题讨论】:

    标签: django


    【解决方案1】:

    attrs 仅对小部件有效,对字段无效。试试:

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

    【讨论】:

    • 如果您想将数据传递给您无法完全控制的代码 (admin),您可以在 SomethingForm.__init__(): self.fields[name].widget.attrs = {...} (或 update) 中执行此操作。或者widget.widget.attrs = {...}django.contrib.admin.widgets.RelatedFieldWidgetWrapper
    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多