如何解决Django将相同的类属性添加到所有相同的类型字段中
| 有没有一种简单的方法可以将widget的所有元素都以形式分配class=radio
?
我知道我可以这样写
rb = forms.ChoiceField( widget=forms.RadioSelect(attrs=\'class\':\'radio\'))
表格中的所有单选按钮,但我认为应该有其他方法。因为我可能在所有单选按钮上都使用了它,所以为所有人编写代码并不好笑。
解决方法
您可以创建自己的小部件,如下所示:
class MyRadioSelect(forms.RadioSelect):
def __init__(self,*args,**kwargs):
attrs = kwargs.pop(\"attrs\",{})
if \"class\" in attrs:
attrs[\"class\"] = \"%s radio\" % attrs[\"class\"]
else:
attrs[\"class\"] = \"radio\"
kwargs[\"attrs\"] = attrs
super(MyRadioSelect,self).__init__(*args,**kwargs)
,像这样?
class ClassyRadioSelect(forms.RadioSelect):
def __init__(self,**kwargs):
#yes,i\'ve to look up how to process args and kwargs properly
attrs = kwargs.get(\'attrs\',{})
attrs[\'class\'] = \' \'.join((attrs.get(\'class\',\'\'),\'radio\'))
kwargs[\'attrs\'] = attrs
super(ClassyRadioSelect,**kwargs)
class ClassyChoiceField(forms.ChoiceField):
def __init__(self,choices=(),required=True,widget=None,label=None,initial=None,help_text=None,**kwargs):
if not widget:
widget = ClassyRadioSelect()
super(ClassyChoiceField,self).__init__(choices,required,widget,label,initial,help_text,**kwargs)
class MyForm(forms.Form):
classy_field1 = ClassyChoiceField()
classy_field2 = ClassyChoiceField()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。