ell*_*lly 2 django django-templates django-forms
我的表格是
class Form(forms.Form):
ability = forms.ChoiceField(widget= forms.CheckboxSelectMultiple(), choices = SKILLS, required=False)
Run Code Online (Sandbox Code Playgroud)
我正在显示它 {{ Form.as_ul }}
我如何将css ul类传递给它?我可以在模板中的某个地方做到吗?不知道这是如何工作的
不幸的是,你必须创建一个新的窗口小部件,但可以使用__init__与render现有的功能CheckboxSelectMultiple部件.
ul_attrs向构造函数添加新参数.
from django import forms
from django.forms.util import flatatt
from django.utils.safestring import mark_safe
class MyCheckboxSelectMultiple(forms.CheckboxSelectMultiple):
def __init__(self, attrs=None, ul_attrs=None):
self.ul_attrs = ul_attrs
super(MyCheckboxSelectMultiple, self).__init__(attrs)
def render(self, name, value, attrs=None, choices=()):
html = super(MyCheckboxSelectMultiple, self).render(name, value, attrs, choices)
final_attrs = self.build_attrs(self.ul_attrs)
return mark_safe(html.replace('<ul>','<ul%s>' % flatatt(final_attrs)))
Run Code Online (Sandbox Code Playgroud)
在您的表单中只需使用此自定义小部件:
class Form(forms.Form):
ability = forms.ChoiceField(widget= MyCheckboxSelectMultiple(ul_attrs={"class":"fancybox"}), choices = SKILLS, required=False)
#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1283 次 |
| 最近记录: |