我的表格是
class Form(forms.Form):
ability = forms.ChoiceField(widget= forms.CheckboxSelectMultiple(), choices = SKILLS, required=False)
我将其显示为 {{ Form.as_ul }}
我如何将 css ul 类传递给它?我可以在模板的某个地方做吗?不确定这是如何工作的
最佳答案
不幸的是,您必须创建一个新的小部件,但您可以使用现有 CheckboxSelectMultiple
小部件的 __init__
和 render
函数。
向构造函数添加一个新的 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)))
在您的表单中只需使用这个自定义小部件:
class Form(forms.Form):
ability = forms.ChoiceField(widget= MyCheckboxSelectMultiple(ul_attrs={"class":"fancybox"}), choices = SKILLS, required=False)
#
关于django:如何将 css 传递给 form.as_ul,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448102/