#python #django
#python #django
Вопрос:
Мне нужно создать форму с помощью django, чтобы проверить, являются ли учащиеся prensent или нет. Я не могу использовать «обычный» способ создания формы, потому что django хочет, чтобы модель формы была реализована со всеми полями, составляющими форму. Я не могу этого сделать, потому что я не знаю количество учеников в классе. как я могу создать динамическую форму, которая не заботится о количестве студентов?
в начале я создал форму в шаблоне с параметром for, чтобы показывать список студентов с каждым флажком
<form method="post">
{% csrf_token %}
Date : <input id="date" type="date" class="mt-3 mb-3">
<br>
{% for student in student_list %}
<input type="checkbox" id="student{{forloop.counter}}" name="student{{forloop.counter}}">
<label for="student{{forloop.counter}}">{{student.first_name }} {{student.last_name}}</label>
<br>
{% endfor %}
<button class="btn btn-outline-primary mr-4"><a href="/lycee/">Cancel</a></button>
<button type="submit" class="btn btn-success radius d-flex">Submit</button>
</form>
Комментарии:
1. используйте
inline_formset
с вызывающим roll, имеющим возможность добавлять строку
Ответ №1:
Возможно, это не лучшая практика, но я думаю, что это должно сработать.
form.html
<form method="POST">
{% csrf_token %}
Date : <input id="date" type="date" class="mt-3 mb-3">
<br>
{% for student in student_list %}
<input type="checkbox" id="student" name="student" value="1">
<label for="student">{{ student.first_name }} {{ student.last_name }}</label>
<br>
{% endfor %}
<button class="btn btn-outline-primary mr-4"><a href="/lycee/">Cancel</a></button>
<button type="submit" class="btn btn-success radius d-flex">Submit</button>
</form>
views.py
def submit_form(request)
if request.method == 'POST':
date = request.POST.get("date")
student = request.POST.getlist("student")
# TODO
Комментарии:
1. но как я могу получить статистику флажка?
2. Попробуйте добавить
value="1"
в `<тип ввода=»флажок»>. Я уже отредактировал сообщение. Дайте мне знать, работает это или нет.3.
request.POST.get("date")
Работает нормально? Если нет, не могли бы вы, пожалуйста, обновить свой текущий код?
Ответ №2:
Редактировать :
Я просто назвал каждый флажок ‘student’, затем я получаю данные каждого флажка в view.py
call_of_roll.html
<form method="post">
{% csrf_token %}
Date : <input name="date" type="date" class="mt-3 mb-3" value="{{defaultdate|date:"Y-m-d" }}" required>
<br>
{% for student in student_list %}
<input type="checkbox" id="{{student.id}}" name="student{{student.id}}" checked>
<label for="student{{student.id}}">{{student.first_name }} {{student.last_name}}</label>
<br>
{% endfor %}
<p>Check if the student is present</p>
<div class="row">
<button class="btn btn-outline-primary mr-4"><a href="/lycee/">Cancel</a></button>
<button type="submit" class="btn btn-success radius d-flex">Submit</button>
</div>
</form>
views.py
if request.method == 'POST':
date = request.POST.get("date")
for student in students:
missing = request.POST.get('student' str(student.id), "off")