Я пытаюсь показать ChoiceField в шаблоне Django, но я не могу заставить его работать.Невозможно отобразить ChoiceField в шаблоне в Django
Я нашел здесь несколько решений, но, похоже, не работает для меня (Possible solution), но я получаю ошибку: too many values to unpack
on line {{ form.as_p }}
.
Так что поиск в Интернете, я нашел это Solution, но я не могу добавить к моему коду и заставить его работать. Я получаю TextField вместо «Dropdown» (в Django Choicefield). А также это решение перечислит все элементы цикла for, и я получаю 4 текстовых поля, вместо этого 2 Choicefields с элементами.
Мой 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' вызывается с аргументом 'choice', который является строкой вместо кортежа. Можете ли вы попробовать заменить это? – raphv
you cand make 'input type =" choicefield "', только 'radio' или' checkbox' – valignatev
ChoiceFields - это сложные поля, и вы также можете сделать их как '