在Django中设置单选按钮的ID

时间:2012-10-07 12:26:30

标签: django

Django 1.4允许精细化radio select

,这很棒
{% for radio in form.important_client reversed%}
      {{radio.tag}}<label for="????">{{radio.choice_label}}</label>
{% endfor %}

但由于使用此方法的一些奇怪原因,<input>没有ID。因此我无法相应地设置<label for='ID' />。这会导致我的CSS出现大问题。

无论如何都要设置ID吗?

2 个答案:

答案 0 :(得分:5)

在调试RadioSelect渲染时,我不知道如何优雅地使用无线电标签和标签。所以这是我试图解决你的问题:

{% for radio in form.important_client reversed %}
    <input name="{{ radio.name }}" type="radio" id="radio_{{ radio.index }}" value={{ radio.choice_value }}>
    <label for="radio_{{ radio.index }}">{{ radio.choice_label }}</label>
{% endfor %}

您可以使用radio.index代替forloop.counter属性(未记录)。

以防我附加调试窗口的屏幕截图,其中显示了radio上下文的示例(图中的form_of_field变量): radio select debug

答案 1 :(得分:2)

这是一种方法,它可能不是最好的,但它的工作原理。在您的表单中,您可以为每个选项设置ID,如下所示:

from django import forms
class MyForm(forms.Form):
    CHOICES = (('1','Available'),('2','Not Available'))
    input   = forms.ChoiceField(widget=RadioSelect(attrs={'id' : 'myId'},choices=CHOICES)

然后在你的模板上:

{% for radio in form.input %}
    {{ radio }}
{% endfor %}

您的HTML将如下所示:

<label for="myId_0"><input id="myId_0" name="input" type="radio" value="1"></label> Available
<label for="myId_0"><input id="myId_0" name="input" type="radio" value="2"></label> Not Available

我希望这有效!