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吗?
答案 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
变量):
答案 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
我希望这有效!