DjangoのテンプレートにChoiceFieldを表示しようとしていますが、動作させることができません。DjangoのテンプレートにChoiceFieldをレンダリングできません
私はここでいくつかの解決策を見つけましたが、私にはうまくいかないようですが(Possible solution)、エラー:too many values to unpack
on line {{ form.as_p }}
が表示されます。
ウェブ上で検索したところ、これはSolutionでしたが、自分のコードに追加して動作させることができません。私はTextFieldを代わりに "ドロップダウン"(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
上:
netList
と
polList
のようなタプルのリストです
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})
:
[(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ループを使用せずにchoicefieldと要素にアクセスするにはどうすればよいですか?私は間違っているの?
ありがとうございました。
'forms.py'では、' forms.ChoiceField'はタプルではなく文字列である 'choices'引数で呼び出されます。あなたはそれを置き換えることができますか? – raphv
あなたは 'input type =" choicefield "'、 'radio'や' checkbox'のみを作成します。 – valignatev
ChoiceFieldsは複雑なフィールドで、 '