0

フォームを POST しようとするとエラーが発生しますが、これはあまり意味がありません。

エラー:

MultiValueDictKeyError at /admin/courses/course-selector/add/
"Key 'form-0-id' not found in <QueryDict: 

私は自分でフォームを描いているので、グーグルで調べて解決しました(テーブルを作成し、必要な場所に各フィールドを印刷しました)。

そのため、ID を含むフィールドに追加しようとしましたが、印刷されません。フォームに書き込むためのテンプレートにIDがありません。私は今何をすべきかわからないので、グーグルでこのケースに対する確立されたアドバイスをフォローして問題を見つけました。

テンプレートコード。

<form action="." method="POST" id="formset">
<table>
    <tr>
        {{ formset.management_form }}
    </tr>
    <tr>
        <th></th>
        {% for field in formset.forms.0 %}
            {% if not field.is_hidden %}
                <th>{{ field.label }}</th>
            {% endif %}
        {% endfor %}

    </tr>

    {% for f in formset.forms %}
        <tr>
            <td><input type="checkbox" id="checkbox_{{ f.id }}" /></td>
            <td>{{ f.id }}</td>
            {% for field in f %}
                {% if not field.is_hidden %}
                    <td>
                        {{ field.errors }}
                        {{ field }}
                    </td>
                {% else %}
                    <td valign="bottom">{{ field }}</
                {% endif %}
            {% endfor %}
        </tr>
    {% endfor %}

   </table>
</form>

簡潔にするために省略...

{{ f.id }} が何も出力しないのはなぜですか。

フォームセットを生成するコードを edit1 に追加すると、ID を取得できないことが原因である可能性があります。

            InstanceFormSet = formset_factory(BulkAddInstanceForm, extra=0)
            # build the list for populating the forms
            n, datalist = 0, []
            while n < int(input_data['copies']):
                datalist.append(data)
                n +=1
            formset = InstanceFormSet(initial=datalist)
4

3 に答える 3

0

テンプレートに複数のエラーが見つかりました:

  1. フォームセット内のすべてのフォームを繰り返し処理していますが、最初のフォームのすべての非表示フィールドも表示しています。これは、フィールドが重複していることを意味します
  2. 後で、すべてのフォームのすべてのフィールドを反復処理します。しかし、id フィールドも 2 回表示しています。1 つはフィールドとして、もう 1 つはチェックボックス ID の一部として。フォームに id フィールドがない場合、f.id として何も出力されません。
于 2012-08-22T11:10:28.250 に答える