Как получить метку выбора в поле выбора форм Django?
У меня есть ChoiceField, теперь как мне получить "ярлык", когда мне это нужно?
class ContactForm(forms.Form):
reason = forms.ChoiceField(choices=[("feature", "A feature"),
("order", "An order")],
widget=forms.RadioSelect)
form.cleaned_data["reason"]
дал бы мне только "функцию" или "порядок" или так.
7 ответов:
Это может помочь:
reason = form.cleaned_data['reason'] reason = dict(form.fields['reason'].choices)[reason]
посмотреть документы на - модели.get_FOO_display (). Так, должно быть что-то вроде :
ContactForm.get_reason_display()
в шаблоне используйте вот так:
{{ OBJNAME.get_FIELDNAME_display }}
Это самый простой способ сделать это: ссылка на экземпляр модели: Модель.get_FOO_display ()
вы можете использовать эту функцию, которая вернет отображаемое имя:
ObjectName.get_FieldName_display()
заменить
ObjectName
С вашим именем класса иFieldName
С полем, из которого вам нужно извлечь отображаемое имя.
если экземпляр формы привязан, вы можете использовать
chosen_label = form.instance.get_FOO_display()
вот способ, который я придумал. Может быть, есть более простой способ. Я проверил его с помощью
python manage.py shell
:>>> cf = ContactForm({'reason': 'feature'}) >>> cf.is_valid() True >>> cf.fields['reason'].choices [('feature', 'A feature')] >>> for val in cf.fields['reason'].choices: ... if val[0] == cf.cleaned_data['reason']: ... print val[1] ... break ... A feature
Примечание: это, вероятно, не очень Pythonic, но он демонстрирует, где можно найти необходимые данные.