3

Django 1.4 允许对无线电选择进行细粒度处理真是太好了

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

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

无论如何要设置ID吗?

4

2 回答 2

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图中的变量): 无线电选择调试

于 2012-10-07T20:31:53.763 回答
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

我希望这行得通!

于 2014-08-27T16:16:26.897 回答