2016-07-15 4 views
0

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上:

netListpolListのようなタプルのリストです
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と要素にアクセスするにはどうすればよいですか?私は間違っているの?

ありがとうございました。

+0

'forms.py'では、' forms.ChoiceField'はタプルではなく文字列である 'choices'引数で呼び出されます。あなたはそれを置き換えることができますか? – raphv

+0

あなたは 'input type =" choicefield "'、 'radio'や' checkbox'のみを作成します。 – valignatev

+0

ChoiceFieldsは複雑なフィールドで、 '