@ Юджи предложил bund_choice_field.data
, однако это вернет значение, которое невидимо для пользователя (используется в value="backend-value"
).В вашей ситуации вы, вероятно, хотите, чтобы буквальное значение было видно пользователю (<option>literal value</option>
).Я думаю, что нет простого способа получить буквальное значение из поля выбора в шаблоне.Поэтому я использую шаблонный фильтр, который делает это:
@register.filter(name='choiceval')
def choiceval(boundfield):
"""
Get literal value from field's choices. Empty value is returned if value is
not selected or invalid.
Important: choices values must be unicode strings.
choices=[(u'1', 'One'), (u'2', 'Two')
"""
value = boundfield.data or None
if value is None:
return u''
return dict(boundfield.field.choices).get(value, u'')
В шаблоне это будет выглядеть так:
<h1> The options you selected before was # {{ form.delivery_method|choiceval }} </h1>
ОБНОВЛЕНИЕ: Я забыл упомянуть важную вещь, которая вам понадобитсяиспользуйте Юникод в выборе значений.Это связано с тем, что данные, возвращаемые из формы, всегда находятся в юникоде.Так что dict(choices).get(value)
не будет работать, если целые числа используются в выборе.