Я пытаюсь показать ChoiceField в шаблоне на Django, но не могу заставить его работать.
Я нашел здесь несколько решений, но мне кажется, что они не работают (Возможное решение), но получаю сообщение об ошибке: too many values to unpack
в строке {{ form.as_p }}
.
Поискав в Интернете, я нашел это решение но я не могу адаптировать свой код и заставить его работать. Я получаю TextField вместо «Dropdown» (в Django Choicefield). Кроме того, это решение перечисляет все элементы в цикле for, и я получаю 4 текстовых поля вместо 2 полей выбора с элементами.
Мой forms.py
выглядит так:
class SimpleDeploy(forms.Form):
def __init__(self, networkList, policiesList, *args, **kwargs):
super(SimpleDeploy, self).__init__(*args, **kwargs)
if networkList and policiesList:
self.fields['networkPartitions'] = forms.ChoiceField(choices=networkList)
self.fields['applicationPolicies'] = forms.ChoiceField(choices=policiesList)
else:
self.fields['networkPartitions'] = forms.ChoiceField(choices='No network partitions found')
self.fields['applicationPolicies'] = forms.ChoiceField(choices='No application policies found')
И на моем views.py
:
def simpleDeploy(request):
netList = getDetailsNetworkPartitions(request)
polList = getDetailsApplicationPolicies(request)
if request.method == 'POST':
abs(5) #Nothing here by the moment
else:
simpleForm = SimpleDeploy(networkList=netList, policiesList=polList)
return render(request, 'apacheStratos/simpleDeploy.html', {'form': simpleForm})
Где netList
и polList
- это список кортежей, например:
[(u'application-policy-2', u'application-policy-2'), (u'application-policy-1', u'application-policy-1')]
И в моем шаблоне я пытаюсь показать ChoiceField следующим образом:
<table class="table">
{% for item in form.networkPartitions.field.choices %}
<label for="">Network Partitions</label> <input type="choicefield" name="networkPartitions" value="{{item.1}}"/>
{% endfor %}
{% for item in form.applicationPolicies.field.choices %}
<label for="">Application Policies</label> <input type="choicefield" name="applicationPolicies" value="{{item.1}}"/>
{% endfor %}
</table>
Как я могу получить поле выбора и доступ к элементам без использования цикла for? Что я делаю неправильно?
Спасибо.
forms.py
forms.ChoiceField
вызывается с аргументомchoices
, который является строкой, а не кортежем. Может попробовать заменить? - person raphv   schedule 15.07.2016input type="choicefield"
, толькоradio
илиcheckbox
- person valignatev   schedule 15.07.2016<select><option>...
, поэтому я бы не рекомендовал ничего, кроме{{form.networkPartitions}}
, которое обычно должно работать. - person raphv   schedule 15.07.2016{{form.networkPartitions}}
получилось :) - person Aker666   schedule 15.07.2016