2016-12-18 4 views
0

Я пытаюсь создать страницу проверки, в которой перечислены все люди, которые зарегистрировались. У каждого человека есть поле ввода, в котором указано количество часов, которые были на мероприятии. Я хочу, чтобы одна и та же форма была представлена ​​несколько раз для каждого человека; Я не хочу иметь кнопку отправки для каждого человека, потому что будет несколько человек, и это будет утомительно. Я использую цикл for {% for signups in signup %}, чтобы пройти через набор запросов для людей, которые зарегистрированы.Django - отправьте несколько форм с помощью одной кнопки отправки

Вот скриншот для иллюстрации:

В бэкэнде, я хочу, чтобы сохранить количество часов к ряду в QuerySet с совпадающим именем.

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> 
+0

https://docs.djangoproject.com/ru/1.10/topics/forms/formsets/ специально может захотеть проверить. ModelFormset. – shark3y

+0

Хорошо. Я пробовал использовать formsets, но не могу определить способ отображения имен участников события. Я использовал цикл for для итерации через участников {% для регистрации в signup%} {{signups.fullname}} * form stuff * {% endfor%} '. Но поскольку я использую '{% for form in formset%}', я не могу придумать способ получить имена каждого участника без повторения их несколько раз. Я редактировал свой вопрос, чтобы иметь текущий код html. –

+0

В форме модели вы можете получить доступ к связанной модели через атрибут «instance», если я не ошибаюсь. Это не в моей голове, но документация django, безусловно, может подтвердить. – shark3y

ответ

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.