Django - 使用一个提交按钮提交多个表单

时间:2016-12-18 19:08:20

标签: python django forms django-forms django-queryset

我正在尝试创建一个检查页面,其中列出了已注册的所有人员。每个人都有一个输入框,提交他们参加活动的小时数。我想要它,以便为每个人多次提交相同的表格;我不希望每个人都有一个提交按钮,因为会有几个人,这将是乏味的。我正在使用for循环{% for signups in signup %}来遍历已注册人员的查询集。

以下是截图:

在后端,我希望它使用匹配的名称保存查询集中行的小时数。

HTML:

<form action="/events/occ_checkin" class="form" method="POST" id="checkin_{{ signups.id }}" name="checkin_{{ signups.id }}">{% csrf_token %}
    {% for form in formset %}
    <h5>
    <label for="{{ form.fullname.id_for_label }}">***how would I get the attendee's name?***</label>
    <input id="{{ form.fullname.id_for_label }}" name="{{ form.fullname.html_name }}" type="hidden" value="***attendee's name here as well***">
    <input id="{{ form.hours.id_for_label }}" name="{{ form.hours.html_name }}" step="0.01" type="number" class="form-control" value="{{ events.hours }}">
    </h5>
    {% endfor %}
    <button class="btn btn-primary btn-block" type="submit">Submit</button>
</form>

1 个答案:

答案 0 :(得分:0)

使用modelformset_factory工作。

HTML:

<form action="/events/occ_checkin" class="form" method="POST" id="checkin_{{ signups.id }}" name="checkin_{{ signups.id }}">{% csrf_token %}
    {% for form in formset %}
    <h5>
    <label for="{{ form.fullname.id_for_label }}">{% for signups in signup %}{% if forloop.parentloop.counter == forloop.counter %}{{ signups.fullname }}{% endif %}{% endfor %}</label>
    <input id="{{ form.fullname.id_for_label }}" name="{{ form.fullname.html_name }}" type="hidden" value="{% for signups in signup %}{% if forloop.parentloop.counter == forloop.counter %}{{ signups.fullname }}{% endif %}{% endfor %}">
    <input id="{{ form.hours.id_for_label }}" name="{{ form.hours.html_name }}" step="0.01" type="number" class="form-control" value="{{ events.hours }}">
    </h5>
    {% endfor %}
    <button class="btn btn-primary btn-block" type="submit">Submit</button>
</form>

对于views.py和forms.py,我只关注了formsets上的文档。