현재 CSS로 스타일을 지정하려는 양식 클래스 중 하나에 RadioSelect 위젯이 있습니다. 그러나 렌더링 된 위젯은 ul
에 포함되어 있으며 목록에는 ID가 없습니다.django RadioSelect 위젯 목록 id
렌더링 된 목록에 ID를 추가하는 가장 쉬운 방법은 무엇입니까?
현재 CSS로 스타일을 지정하려는 양식 클래스 중 하나에 RadioSelect 위젯이 있습니다. 그러나 렌더링 된 위젯은 ul
에 포함되어 있으며 목록에는 ID가 없습니다.django RadioSelect 위젯 목록 id
렌더링 된 목록에 ID를 추가하는 가장 쉬운 방법은 무엇입니까?
렌더링 된 html을 수정할 해결책이 없습니다. 하지만 당신은 ID와 태그 (또는 내 경우에는 클래스)의 내부 렌더링 된 HTML을 넣을 수 있습니다 :
<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();
...
서브 클래스 RadioFieldRenderer
및 render
메소드를 오버라이드 (override) .
RadioFieldRenderer
은 라디오 위젯을 사용자 정의 할 수 있도록 RadioSelect에서 사용하는 객체입니다.
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
)
)
ul
요소에 클래스를 추가
예 구현