我的表格:
MODE_CHOICES = (('blue', 'blue'), ('red', 'red'))
class MultiSearchForm(forms.Form):
mode = forms.ChoiceField(required = True, widget = RadioSelect, choices = MODE_CHOICES)
我的观点:
class LandingPage(TemplateView):
template_name = "landingPage.html"
def get_context_data(self, **kwargs):
context = super(LandingPage, self).get_context_data(**kwargs)
context.update({
'searchForm': MultiSearchForm(),
})
return context
我的模板:
<ul>
{% for choice in searchForm.mode.choices %} // for loop is not entered
<li>
<input type="radio" name="mode" value="{{choice.0}}"
{% ifequal searchForm.mode.data choice.0 %}
checked="checked"
{% endifequal %}/>
</li>
{% endfor %}
</ul
{{searchForm.mode.choices.0}} //no output
{{searchForm.mode}} // gives me 2 radio buttons
答案 0 :(得分:2)
来自Django文档(https://docs.djangoproject.com/en/dev/ref/forms/widgets/):
Django 1.4中的新功能 - 为了更精细地控制生成的标记,您可以遍历模板中的单选按钮。假设一个带有字段披头士的表单myform使用RadioSelect作为其小部件:
{% for radio in myform.beatles %}
<div class="myradio">
{{ radio }}
</div>
{% endfor %}
答案 1 :(得分:0)
你为什么这样做?您应该让字段输出自己,包括选定的字段。如果您需要设置其中一个选项,则应在视图或表单中使用initial
参数执行此操作:
context.update({
'searchForm': MultiSearchForm(initial={'mode': your_choice}),
})