Я случайно наткнулся на решение, когда возился с кодом.Вот как я это сделал.
Views.py
def cadastrar_presenca(request, pk):
all_presencas = Presenca.objects.all()
all_alunos = Aluno.objects.filter(turma_id=pk)
all_turmas = Turma.objects.all()
turma = Turma.objects.get(pk=pk)
i = 0
PresencaFormSet = modelformset_factory(Presenca, form=PresencaForm, extra=all_alunos.count())
id_turma = get_object_or_404(Turma, pk=pk)
if request.method == 'GET':
formset = PresencaFormSet(queryset=Presenca.objects.none())
elif request.method == "POST":
formset = PresencaFormSet(request.POST)
if formset.is_valid():
for form in formset:
presenca = form.save(commit=False)
presenca.RA = all_alunos[i]
presenca.save()
i = i + 1
return redirect('/alunos_cursinho') #voltar para a url alunos-cursinho(urls.py)
return render(request, 'cadastrar_presenca.html', {'turma': turma, 'id_turma': id_turma,
'all_turmas': all_turmas, 'all_alunos': all_alunos,
'formset':formset, 'all_presencas' : all_presencas})
И форма:
class PresencaForm(forms.ModelForm):
class Meta:
model = Presenca
fields = ('data', 'Periodo1', 'Periodo2',)
widgets = {'data': DateInput()}