1. Formset(表单集)是多个表单的集合。FormsetWeb开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据
  1. class StudentStudyRecordModel(forms.ModelForm):
  2. class Meta:
  3. model=StudentStudyRecord
  4. fields=['score','homework_note']
  1. view视图
  1. from django.forms.models import modelformset_factory
  2.  
  3. class Student_study_record(View):
  1. def get(self,request):
  2. model_formset_cls=modelformset_factory(model=StudentStudyRecord,form=StudentStudyRecordModel,extra=0)
  3. queryset=StudentStudyRecord.objects.filter(classstudyrecord__id=request.GET.get('pk')) #批量操作的queryset
  4. formset=model_formset_cls(queryset=queryset)
  5. return render(request, 'students/Student_study_record.html', locals())
  6. def post(self,request):
  7. model_formset_cls = modelformset_factory(model=StudentStudyRecord, form=StudentStudyRecordModel, extra=0)
  8. formset=model_formset_cls(request.POST)  #与modelform校验基本一致,就是不用穿instance了
  9. if formset.is_valid():
  10. formset.save()
  11. return redirect('/class_study_record/')
  12. else:
  13. print('formset.errors##################',formset.errors)
  14. return self.get(request)

templates模版

  1. <form action="" method="post" novalidate>
  2.  
  3. <table class="table table-hover table-striped" style="margin-top: 20px">
  4. <thead>
  5. <tr>
  6. <td>编号</td>
  7. <td>姓名</td>
  8. <td>考勤</td>
  9. <td>成绩</td>
  10. <td>批语</td>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. {# 必须有,不然会报错#}
  15. {{ formset.management_form }}
  16. {% for form in formset %}
  17. <tr>
  18. <td>{{ form.id }}</td>           # 必须有form.id
  19. <td>{{ form.instance.student }}</td> #instance是显示具体的某个对象的值,而不是多选框(不能修改)
  20. <td>{{ form.instance.get_record_display }}</td>  
  21. <td>{{ form.score }}</td>
  22. <td>{{ form.homework_note }}</td>
  23. {% csrf_token %}
  24. </tr>
  25. {% endfor %}
  26. </tbody>
  27. </table>
  28. <button class=" btn btn-success btn-sm pull-right" style="margin: 30px;">提交</button>
  29. </form>
  1.  

formset批量处理form表单数据的更多相关文章

  1. 解析form表单数据

    //解析form表单数据 function parseFormData(params) { var args = new Object(); for(var key in params){ if(!p ...

  2. easyui不提交window中的form表单数据

    <form id="ff" method="post">, <div id="win" class="easyu ...

  3. Django框架获取各种form表单数据

    Django中获取text,password 名字:<input type="text" name="name"><br><br& ...

  4. Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目

    1.先看一下 Model 非常多 from django.db import models from users.models import UserProfile # Create your mod ...

  5. 3..jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

  6. html基础:jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

  7. element-ui中关闭对话框清空验证,清除form表单数据

    对于elementUI中对话框,点击对话框和关闭按钮 怎么清空验证,清空form表单,避免二次点击还会有 验证错误的提示.今天终于自己查资料解决了,分享给大家 1.首先在你的对话框 取消按钮 加一个c ...

  8. Select下拉列表选择自动提交form表单数据

    HTML代码: <form action='__CONTROLLER__/index' method="get" id="myform"> < ...

  9. Form表单数据

    官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/request-forms/ 接收的不是 JSON,而是表单字段时,要使用 Form 要使用表单,需预先 ...

随机推荐

  1. 通过json传递图片(base64编码)

    程序一: 后台代码: public ActionResult Index() { FileStream fs = new FileStream("e:\\file\\psb.jpg" ...

  2. C# 使用SkinSharp皮肤库

    SkinSharp是Windows环境下一款强大的通用换肤库. SkinSharp作为通用换肤库,只需要在您的程序中添加一行代码,就能让您的界面焕然一新,并拥有多种主题风格和色调的动态切换功能以及Ae ...

  3. [转]SQL注入漏洞及绑定变量浅谈

    1.一个问题引发的思考 大家在群里讨论了一个问题,奉文帅之命写篇作文,且看: String user_web = "user_web" String sql = "upd ...

  4. 详解如何将MathType嵌入word中

    将MathType嵌入word中的过程就是word插入对象的过程,插入对象是word软件中最常见的操作,MathType公式编辑器与所有的Office程序(OLE技术)都有很好的兼容性,本教程将详解如 ...

  5. linux,shell中if else if的写法,if elif

    需求描述: 在写shell脚本的过程中,用到了if else的写法,突然有多个参数需要判断 那么就想到了if else if的用法,于是进行如下的测试. 测试过程: 1.写如下的测试脚本,进行多个值的 ...

  6. Socket无连接简单实例

    使用无连接的套接字,我们能够在自我包含的数据包里发送消息,采用独立的读函数读取消息,读取的消息是使用独立的发送函数发送的.但是UDP数据包不能保证可靠传输,存在许多的因素,比如网络繁忙等等,都有可能阻 ...

  7. mybatis由浅入深day01_5.3 Mapper动态代理方法

    5.3 Mapper动态代理方法(程序员只需要写mapper接口(相当于dao接口)) 5.3.1 实现原理(mapper代理开发规范) 程序员还需要编写mapper.xml映射文件 程序员编写map ...

  8. 写了一个简单的CGI Server

    之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...

  9. C++成员初始化列表的语法

    如果Classy是一个累,而mem1.mem2.mem3都是这个类的数据称源,则类构造函数可以使用如下的语法来初始化数据成员:Classy::Classy(int n, int m) : mem1(n ...

  10. c++11实现optional

    optional< T> c++14中将包含一个std::optional类,optional< T>内部存储空间可能存储了T类型的值也可能没有存储T类型的值.当optiona ...