2011-10-02 34 views
1

我目前有一个RadioSelect窗口小部件,我想用CSS样式表单类中的一个。然而,呈现的小部件包含在ul中,并且该列表没有标识。django RadioSelect部件列表ID

什么是最简单的方式添加一个id到渲染列表?

回答

1

我没有解决方案来修改呈现的HTML。 但你可以把呈现的HTML与ID标签(或在我的情况一类)中:

<td class="tria_tag" >     
        <ul> 
<li><label for="id_935591-estat_0"><input checked="checked" name="935591-estat" value="2" id="id_935591-estat_0" type="radio" class="presenciaEstat" /> Present</label></li> 
<li><label for="id_935591-estat_1"><input value="3" type="radio" class="presenciaEstat" name="935591-estat" id="id_935591-estat_1" /> Falta</label></li> 
<li><label for="id_935591-estat_2"><input value="4" type="radio" class="presenciaEstat" name="935591-estat" id="id_935591-estat_2" /> Justificada</label></li> 
<li><label for="id_935591-estat_3"><input value="5" type="radio" class="presenciaEstat" name="935591-estat" id="id_935591-estat_3" /> Retràs</label></li> 
</ul> 
       </td> 

,然后使用jQuery,您可以访问到:

$('.tria_tag').each(
    function(index) { 
    ul=$(this).children().first(); 
    ... 
3

子类RadioFieldRenderer并重写render方法。

RadioFieldRenderer是RadioSelect用来启用无线小部件的自定义的对象。

实施例的实现,增加了类ul元件:

from django.utils.encoding import force_unicode 
from django.utils.safestring import mark_safe 

class MyRadioFieldRenderer(forms.widgets.RadioFieldRenderer): 

    def render(self): 
     """Outputs a <ul> for this set of radio fields.""" 
     return mark_safe(u'<ul class="inputs-list">\n%s\n</ul>' % 
       u'\n'.join([u'<li>%s</li>' 
       % force_unicode(w) for w in self])) 

用法:

field = forms.ChoiceField(label=_('field'), 
     choices=FIELD_CHOICES, 
     widget=forms.widgets.RadioSelect(
      renderer=MyRadioFieldRenderer 
      ) 
     ) 
相关问题