1

django(v 1.3)テンプレートを使用してレンダリングされた可変数のフィールド名/入力ボックスをレンダリングしようとしています。私の見解では、テーブルを検索して列名を取得してから、同じサイズのforms.CharFields()のリストを作成し、次のようにそれらをまとめて圧縮します。

ua_data = [forms.CharField(required=False) for i in range(len(ua_data_field_names))]
ua_fields = zip(ua_data_field_names, ua_data)
ua_field1 = forms.CharField(required=False) # temp field for testing

そのため、コンテキストの最後に次のようなものが含まれます(1つのフィールドのみ)。

>>> ua_fields
[(u'Test field', <django.forms.fields.CharField object at 0x108386b50>)]

私のテンプレートでは、次のループを実行しています。

  {% for field in form.ua_fields %}
  <tr>
      <td>{{ field.0 }}</td>
      <td>{{ field.1 }} {{ field.1.errors }}</td>
      {#<td>{{ form.ua_field1 }} {{ form.ua_field1.errors }}</td>#}
  </tr>
  {% endfor %}

これにより、レンダリングされたHTMLで次のことがわかります。

Test field  <django.forms.fields.CharField object at 0x1081f1c50>

一方、<td>上記の2番目をコメント化された行と交換すると、実際に入力フィールドがレンダリングされます(ua_field1は直接forms.CharFieldオブジェクトです)

リストルックアップフィールドが魔法のHTMLレンダリングを実行できないのは何ですか?

4

1 に答える 1

1

によってレンダリングされるもの{{ form.field1 }}は、 と同じオブジェクトではありませんform.fields['field1']。これは特別な BoundField であり、いくつかのデータにバインドされ、レンダリングの準備ができています。

したがって、実際には、フォームの作成時にfield1...を使用してフォームにデータを入力し、"'text_name', value of "fieldNua_fields()self.__getitem__('fieldX')

于 2012-04-17T04:23:08.010 に答える