3

It is great that Django 1.4 allows fine graining of radio select

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

but for some odd reason when using this methodology, the <input> have no IDs. And hence I can't set the <label for='ID' /> accordingly. That causes big issues in my CSS.

Is there anyway to get the IDs set nonetheless?

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

これはそのための1つの方法であり、最善ではないかもしれませんが、機能します。フォームでは、次のように各選択肢の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 に答える