如何手动呈现表单选择
How to render Form Choices manually
我在form.py
SELECT_PRODUCT = [
('item1', 'item1'),
('item2', 'item2'),
('item3', 'item3'),
('item4', 'item4'),
]
class OrderBonus(forms.Form):
select_product = forms.CharField(widget=forms.Select(choices=SELECT_PRODUCT ))
在 html 我需要单独呈现每个选择:
<select name="{{ form_bonus.select_product .name }}">
<option value="{{form_bonus.select_product.field.choice.0}}">{{form_bonus.select_product.field.choice.0}}</option>
<option value="{{form_bonus.select_product.field.choice.1}}">{{form_bonus.select_product.field.choice.1}}</option>
<option value="{{form_bonus.select_product.field.choice.2}}">{{form_bonus.select_product.field.choice.2}}</option>
</select>
我尝试不同的方式:
1) form_bonus.select_product.field.choice.0
2) form_bonus.select_product.field.choice.[0]
3) form_bonus.select_product.field.choice.("0")
我尝试迭代:
{% for choice in form_bonus.select_product.field.choices %}
{{ choice }}
{% endfor %}
或
{% for value, text in form_bonus.select_product.field.choices %}
{{ value}} - {{ text }}
{% endfor %}
任何人都知道如何覆盖 Select 小部件以使用每个选项:
form_bonus.select_product.field.choice.0
等
Python 3.5.2 和 Django 1.10
试试这个:
<select name="{{ form_bonus.select_product.name }}">
{% for choice in form_bonus.select_product.field.choices %}
<option value="{{ choice.0 }}">{{ choice.1 }}</option>
{% endfor %}
</select>
但请务必使用 ChoiceField
而不是 CharField
:
class OrderBonus(forms.Form):
select_product = forms.ChoiceField(choices=SELECT_PRODUCT)
如果你愿意,你可以简单地写 {{ form_bonus.as_p }}
而不是循环。
我在form.py
SELECT_PRODUCT = [
('item1', 'item1'),
('item2', 'item2'),
('item3', 'item3'),
('item4', 'item4'),
]
class OrderBonus(forms.Form):
select_product = forms.CharField(widget=forms.Select(choices=SELECT_PRODUCT ))
在 html 我需要单独呈现每个选择:
<select name="{{ form_bonus.select_product .name }}">
<option value="{{form_bonus.select_product.field.choice.0}}">{{form_bonus.select_product.field.choice.0}}</option>
<option value="{{form_bonus.select_product.field.choice.1}}">{{form_bonus.select_product.field.choice.1}}</option>
<option value="{{form_bonus.select_product.field.choice.2}}">{{form_bonus.select_product.field.choice.2}}</option>
</select>
我尝试不同的方式:
1) form_bonus.select_product.field.choice.0
2) form_bonus.select_product.field.choice.[0]
3) form_bonus.select_product.field.choice.("0")
我尝试迭代:
{% for choice in form_bonus.select_product.field.choices %}
{{ choice }}
{% endfor %}
或
{% for value, text in form_bonus.select_product.field.choices %}
{{ value}} - {{ text }}
{% endfor %}
任何人都知道如何覆盖 Select 小部件以使用每个选项:
form_bonus.select_product.field.choice.0
等
Python 3.5.2 和 Django 1.10
试试这个:
<select name="{{ form_bonus.select_product.name }}">
{% for choice in form_bonus.select_product.field.choices %}
<option value="{{ choice.0 }}">{{ choice.1 }}</option>
{% endfor %}
</select>
但请务必使用 ChoiceField
而不是 CharField
:
class OrderBonus(forms.Form):
select_product = forms.ChoiceField(choices=SELECT_PRODUCT)
如果你愿意,你可以简单地写 {{ form_bonus.as_p }}
而不是循环。