django - 如何在 Django 中部分填充表单集
问题描述
我很难在模型表单集中仅预填充某些字段。
就上下文而言,该项目是一个考勤应用程序,其中将有一个包含列的网格:学生姓名、日期以及学生是否在场。
目标是用学生姓名的列填充所有学生姓名(已经从学生模型保存在数据库中),并且所有行的日期都相同。这样当用户要出勤时,他只需要点击出席的复选框。我发现了一个类似于我的问题,但没有得到解答(在 Django 表单集中预填充部分初始数据)。如果需要,我可以发布我的代码寻求帮助。
任何帮助都感激不尽。
解决方案
我在修改代码时偶然发现了解决方案。这是我的做法。
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()}
推荐阅读
- excel - 如何使用 VBA 启用多个 Excel 下拉列表,这些下拉列表输入的值与用户选择的值不同?
- javascript - Azure Cosomos DB 存储过程响应大小太大
- scala - Scala 火花:NotSerializableException 与番石榴 RateLimiter
- angular - Angular 通用自定义验证组件
- c# - 如何隐藏asp.net FormView控件中的“编辑”按钮?
- python - Python word 客户端找不到 .dotx
- laravel-5.6 - 这个值如何未能通过我的 laravel 日期验证?
- angular - Tornado 没有在 Chrome 中设置 cookie
- php - Microsoft Graph API 无法在生产环境中运行
- css - 由于具有 min-height 和 min-width 的不同子级而使位置绝对子级适合父级的宽度和高度