gpt4 book ai didi

django - 在一个页面上使用多个不同的表单(Django 1.7 中的 Crispyforms)

转载 作者:行者123 更新时间:2023-12-02 03:30:09 25 4
gpt4 key购买 nike

我想在我的大学管理网站的一个页面上显示多个表格。这个想法是,教师应该可以在同一页面上的小组评估中输入小组的所有分数。该 View 应显示一个组元素表单,然后显示单个元素的多个表单(组的大小可能会有所不同)。

Django 文档对表单前缀的想法有点简短,所以我不太确定这是否是正确的方法。我想用脆皮形式呈现表格。这种方法是否有效,或者是否有更好的方法来实现我的目标?

views.py
--------
# Generate the forms for the template
group_form = GroupForm(prefix='group')
student_forms = []
for student in students_in_group:
student_form = StudentForm(initial={...}, prefix=student.student_id)
student_forms.append(student_form)
...
# Processing post request
if request.method == 'POST':
group_form = GroupForm(request.POST, prefix='group')
if group_form.is_valid():
group_form.save()
for student in students_in_group:
student_form = StudentForm(request.POST, prefix=student.student_id)
if student_form.is_valid():
student_form.save()


group_feedback.html
-------------------
{% crispy group_form %}
{% for form in student_forms %}
{% crispy form %}
{% endfor %}

最佳答案

该代码确实看起来应该按照您期望的方式运行。虽然,对 StudentForm 表单列表使用表单集可能是一种更简洁的方法。

View .py

StudentFormSet = modelformset_factory(Student)

# Processing post request
if request.method == 'POST':
group_form = GroupForm(request.POST, prefix='group')
if group_form.is_valid():
group_form.save()
formset = StudentFormSet(request.POST, prefix='student')
if formset.is_valid():
formset.save()
else:
# Generate the forms for the template
group_form = GroupForm(prefix='group')
formset = StudentFormSet(queryset=Student.objects.filter(whatever gives you students_in_group), prefix='student')

我还没有审查过 formsets 如何与 crispyforms 一起发挥它的值(value)。

关于django - 在一个页面上使用多个不同的表单(Django 1.7 中的 Crispyforms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27464291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com