迭代CheckboxSelectMultiple中的选项

Lor*_*nzo 13 django django-forms

我有一个CheckboxSelectMultiple字段,为什么我不能迭代单个选项?

这不起作用:

  {%for choice in form.travels.choices%}
    {{choice}}
  {%endfor%}
Run Code Online (Sandbox Code Playgroud)

即使指定{{choice.0}}没有帮助,我怎么能这样做?

谢谢

Jar*_*die 31

在模板内部,该travels字段实际上是一个实例BoundField(它是一个Django对象,它将字段及其值组合在一起进行渲染).这意味着属性有些不同.

迭代选择作为元组:

{% for choice in form.travels.field.choices %}
    {{ choice }} - 
{% endfor %}

Produces: (1, 'One') - (2, 'Two') -
Run Code Online (Sandbox Code Playgroud)

分别迭代选择元组中的元素:

{% for choice_id, choice_label in form.travels.field.choices %}
    {{ choice_id }} = {{ choice_label }} <br/>
{% endfor %}

Produces: 1 = One
          2 = Two
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.尽管如此,我不确定你需要这样做的背景; 从表面上看,它似乎并不像django那样.您可能会发现使用自定义表单字段或自定义模板标记可以为您提供更便携,可重复使用的实现,从而更好地维护django在视图代码和模板代码之间的预期分离.当然,在这种情况下,YMMV很可能是直接迭代方法适合您.

  • 我知道这是旧的,但有没有办法确定该字段是否被选中? (3认同)