Внутри шаблона поле travels
фактически является экземпляром BoundField
(который является объектом Django, который связывает воедино поле и его значение для рендеринга). Это означает, что свойства несколько отличаются.
Чтобы перебрать варианты в виде кортежа:
{% for choice in form.travels.field.choices %}
{{ choice }} -
{% endfor %}
Produces: (1, 'One') - (2, 'Two') -
Чтобы перебрать элементы в кортежах выбора отдельно:
{% for choice_id, choice_label in form.travels.field.choices %}
{{ choice_id }} = {{ choice_label }} <br/>
{% endfor %}
Produces: 1 = One
2 = Two
Надеюсь, это поможет. Сказав это, тем не менее, я не уверен в контексте, в котором вам нужно это сделать; на первый взгляд, это не похоже на джанго. Вы можете обнаружить, что использование настраиваемого поля формы или пользовательского тега шаблона дает вам более переносимую, повторно используемую реализацию, которая лучше поддерживает предполагаемое разделение django между кодом представления и кодом шаблона. Конечно, YMMV и вполне может быть, что подход прямой итерации подходит для вас в этом случае.