残念ながら、あなたは、新しいウィジェットを作成する必要がありますが、既存の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)))
単にこのカスタム・ウィジェットを使用します。Djangoの1.11以来
class Form(forms.Form):
ability = forms.ChoiceField(widget= MyCheckboxSelectMultiple(ul_attrs={"class":"fancybox"}), choices = SKILLS, required=False)
#
私はdjango 1.3でそれをテストしました – Lepi