Сделать все поля в наборе форм модели обязательными для заполнения в HTML - Django
Я просмотрел практически все вопросы на Stack Overflow, связанные с Django Formsets. Ни один из них не отвечает на мой вопрос реалистичным образом.
У меня есть страница, которая использует inlineformset_factory. Цель состоит в том, чтобы родители добавляли свою информацию, а затем информацию о своих учениках. Мне нужно, чтобы ВСЕ поля ученика были обязательными в HTML. Пока только информация о родителях имеет атрибут required в HTML. Количество учеников передается как часть url - example.com/register/3 будет, если родитель зарегистрирует 3 ученика.
Итак, если родитель выбирает 3 учеников на предыдущей странице, он будет отправлен на example.com/register/3, и там будет показана форма родителя с формами 3 учеников. ЭТО РАБОТАЕТ. Что не работает, так это то, что ВСЕ три формы ученика должны быть в HTML.
Мое мнение:
def homeschoolRegister(request, num):
parent_form = ParentInformationForm()
StudentFormSet = inlineformset_factory(ParentInformation, StudentInformation, fields=('student_first_name', 'student_last_name', 'grade'), can_delete=False, extra=int(num))
if request.method == 'POST':
parent_form_post = ParentInformationForm(request.POST)
if parent_form_post.is_valid():
parent = parent_form_post.save(commit=False)
parent.save()
student_form_post = StudentFormSet(request.POST, instance=parent)
if student_form_post.is_valid():
student_form_post.save()
try:
if int(num) <= 0:
return redirect(reverse('home'))
if int(num) > 15:
return redirect(reverse('home'))
context = {'parent_form':parent_form ,'formset':StudentFormSet}
return render(request, 'home/home-register.html', context)
except:
return redirect(reverse('homeschool-home'))
Мой HTML:
{% extends 'base.html' %}
{% load tailwind_filters %}
{% load static %}
{% block title %} Register {% endblock title %}
{% block content %}
<div class="max-w-4xl mx-auto pb-20 px-5">
<form method="POST" class="pb-10">
{% csrf_token %}
{{parent_form|crispy}}
{{ formset.management_form}}
{% for form in formset %}
{{form|crispy}}
{% endfor %}
<button class="standard-button" type="submit">Submit</button>
</form>
</div>
{% endblock content %}