我可以更改表单小部件类而不在 Django 中明确重新定义它吗?
Posted
技术标签:
【中文标题】我可以更改表单小部件类而不在 Django 中明确重新定义它吗?【英文标题】:Can I change a form widget class without redefining it explicitly in Django? 【发布时间】:2014-04-20 15:33:34 【问题描述】:我正在尝试更改 Django 表单字段的类。我的表格如下:
class MyForm(forms.Form):
my_field = forms.ChoiceField(choices=myChoices)
为什么只能显式更改 Select 字段的类?我想要默认的Select
小部件,有没有办法在不重新定义的情况下更改它的属性?这有效:
class MyForm(forms.Form):
myfield = forms.ChoiceField(choices=myChoices, widget=forms.Select(attrs='class': 'myclass'))
但这看起来合乎逻辑且更简单,引发TypeError: __init__() got an unexpected keyword argument 'attrs'
?
class MyForm(forms.Form):
myfield = forms.ChoiceField(choices=myChoices, attrs='class': 'myclass')
【问题讨论】:
【参考方案1】:代码比较多,不过如果实在不想定义widget类型类,可以这样做:
class MyForm(forms.Form):
myfield = forms.ChoiceField(choices=myChoices)
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['myfield'].widget.attrs='class': 'myclass'
【讨论】:
以上是关于我可以更改表单小部件类而不在 Django 中明确重新定义它吗?的主要内容,如果未能解决你的问题,请参考以下文章