2009-03-22 10 views
4

を反復処理ではない私は、テンプレート内とのためform.fieldsを反復処理しようとしています:ジャンゴ:form.fieldsはインスタンスフィールド

{% for field in form.fields %} 
    {{ field }}, 
{% endfor %} 

私はフィールド名(「名前、説明のリストを取得しています。 .. ")の代わりに以下を使用するときにレンダリングされたHTMLコード:

{{ form.name }}, {{ form.description }} 

(この場合に出力される。

<入力されたID =" id_name」 type = "text" name = "name" maxlength = "200"/> <入力ID = "id_description" ....

すべてのヒント? ありがとう!

答えて

10

"form.fields"ではなく、 "form"で繰り返したい。後者はFieldインスタンスを返し、前者は(バインドされていないフォームの場合でも)BoundFieldインスタンスを返し、ウィジェットのHTMLをレンダリングします。

form.visible_fieldsとform.hidden_​​fieldsは、フォームの表示/非表示フィールドのみを取得するユーティリティメソッドですが、BoundFieldインスタンスも返します。彼らはform.fieldsと並行しているわけではありません(私はこれが最も明確な可能性のあるAPIではないことに同意します)。

0

あなたが得るフィールドはdjango.forms.Fieldインスタンスです。 HTMLビューを取得するには、ウィジェット機能を使用します。 {{field.widget}}

+0

{{field.widget}}は空の文字列も返します。解決策を見つけた - 下記を参照 – nivhab

2

"form.fields"の代わりに "form"を反復することで問題は解決しました。 ドキュメントには、また、例を提供する理由としてわからない:また空集合になり

{% for field in form.visible_fields %} 
... 

を。私の形が縛られていないという事実と関係がありますか?わからない...