0

私は次のようなフォームセットを持っています:

EduFormSet = formset_factory(forms.CandidateDegreeForm, can_delete=True)
edu_formset = EduFormSet(prefix='candidate_degree')

テンプレートで私は次のことをしています:

{% if edu_formset %}
{% for form in edu_formset %}
    <div class="formset-form" style="visibility: visible;">
        <form id="{{ form.prefix }}" method="POST" action="/degree/add/">
            <h4>Some Heading Here</h4>
            {% csrf_token %}
            {% for field in form %}
                {% include "form_field.html" %}
            {% endfor %}
        </form>
        <script type="text/javascript">
            jQuery(document).ready ( function(){
                jQuery('{{ form.prefix }}').validationEngine();
            });
        </script>
        <div class="clearfix"></div>
    </div>
{% endfor %}
{{ edu_formset.management_form }}
    <div class="button-container right">
        <input class="button" type="submit" value="submit" />
    </div>
{% endif %}

理由はわかりませんが、送信ボタンを押しても何も起こりません。

4

1 に答える 1

1

送信ボタンがフォーム内にないため、クリックによってアクションがトリガーされることはありません。

ドキュメントがフォームセットをレンダリングする方法を示しています。

<form method="post" action="">
    <!-- Notice how the formset (below) and thus its submit button
         is INSIDE the form (above) -->
    {{ formset.management_form }}
    <table>
        {% for form in formset %}
        {{ form }}
        {% endfor %}
    </table>
</form>

form.prefixforを使用して複数のフォームを作成しようとしましたid。これは機能する可能性がありますが、各フォームは独自の送信ボタンでレンダリングする必要があります。フォームセットは、複数のフォームを1つに結合し、上記のプレフィックスによって値の名前の一意性を保証するように設計されています。それらは単一のフォームで囲まれ、送信トリガーを共有します。

于 2012-12-19T14:41:46.233 に答える