参考地址:https://www.cnblogs.com/DI-DIAO/p/8978780.html
https://www.cnblogs.com/WiseAdministrator/articles/10975786.html
https://www.cnblogs.com/clschao/articles/10486468.html#part_7
formset:适用于对多个表单进行操作,字段需要也可以用model中的表的字段来作为验证规则。
modelfoemset:适用于对多个表单进行操作,字段需要也可以用model中的表的字段来作为验证规则
class StudyView(View):
def get(self, request, course_id):
# 创建formset对象
formset_cls = modelformset_factory(model=models.StudyRecord, form=StudyRecordModelForm, extra=0)
study_obj = models.StudyRecord.objects.filter(course_record_id=course_id)
# 修改formset中的queryset的范围,此时的formset_cls会显示所有的StudyRecord中的数据
formset = formset_cls(queryset=study_obj) # 通过自己指定queryset范围,前端只显示我们需要的数据
return render(request, 'saleshtml/study.html', {'formset': formset})
def post(self, request, course_id):
formset_cls = modelformset_factory(model=models.StudyRecord, form=StudyRecordModelForm, extra=0) # extra表示显示完全部数据后,在后面留n行数据为空的地方
formset = formset_cls(request.POST)
if formset.is_valid():
formset.save()
return redirect(request.path)
else:
return render(request, 'saleshtml/study.html', {'formset': formset})
formset部分自己查资料
modelformset前端中要加入:(固定写法,不要问我为什么,我目前也不知道)
1. {{ formset.management_form }}, 2. {{ field.id }} # field是循环formset之后的对象