modelform, formset, modelformset

参考地址: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之后的对象

posted @ 2020-05-14 09:18  10132714  阅读(95)  评论(0编辑  收藏  举报