formset批量处理form表单数据
Formset(表单集)是多个表单的集合。Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据
class StudentStudyRecordModel(forms.ModelForm):
class Meta:
model=StudentStudyRecord
fields=['score','homework_note']
view视图
from django.forms.models import modelformset_factory class Student_study_record(View):
def get(self,request):
model_formset_cls=modelformset_factory(model=StudentStudyRecord,form=StudentStudyRecordModel,extra=0)
queryset=StudentStudyRecord.objects.filter(classstudyrecord__id=request.GET.get('pk')) #批量操作的queryset
formset=model_formset_cls(queryset=queryset)
return render(request, 'students/Student_study_record.html', locals()) def post(self,request):
model_formset_cls = modelformset_factory(model=StudentStudyRecord, form=StudentStudyRecordModel, extra=0)
formset=model_formset_cls(request.POST) #与modelform校验基本一致,就是不用穿instance了
if formset.is_valid():
formset.save()
return redirect('/class_study_record/')
else:
print('formset.errors##################',formset.errors)
return self.get(request)
templates模版
<form action="" method="post" novalidate>
<table class="table table-hover table-striped" style="margin-top: 20px">
<thead>
<tr>
<td>编号</td>
<td>姓名</td>
<td>考勤</td>
<td>成绩</td>
<td>批语</td>
</tr>
</thead>
<tbody>
{# 必须有,不然会报错#}
{{ formset.management_form }}
{% for form in formset %}
<tr>
<td>{{ form.id }}</td> # 必须有form.id
<td>{{ form.instance.student }}</td> #instance是显示具体的某个对象的值,而不是多选框(不能修改)
<td>{{ form.instance.get_record_display }}</td>
<td>{{ form.score }}</td>
<td>{{ form.homework_note }}</td>
{% csrf_token %}
</tr>
{% endfor %}
</tbody>
</table>
<button class=" btn btn-success btn-sm pull-right" style="margin: 30px;">提交</button>
</form>
formset批量处理form表单数据的更多相关文章
- 解析form表单数据
//解析form表单数据 function parseFormData(params) { var args = new Object(); for(var key in params){ if(!p ...
- easyui不提交window中的form表单数据
<form id="ff" method="post">, <div id="win" class="easyu ...
- Django框架获取各种form表单数据
Django中获取text,password 名字:<input type="text" name="name"><br><br& ...
- Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目
1.先看一下 Model 非常多 from django.db import models from users.models import UserProfile # Create your mod ...
- 3..jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...
- html基础:jquery的ajax获取form表单数据
jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...
- element-ui中关闭对话框清空验证,清除form表单数据
对于elementUI中对话框,点击对话框和关闭按钮 怎么清空验证,清空form表单,避免二次点击还会有 验证错误的提示.今天终于自己查资料解决了,分享给大家 1.首先在你的对话框 取消按钮 加一个c ...
- Select下拉列表选择自动提交form表单数据
HTML代码: <form action='__CONTROLLER__/index' method="get" id="myform"> < ...
- Form表单数据
官方文档地址:https://fastapi.tiangolo.com/zh/tutorial/request-forms/ 接收的不是 JSON,而是表单字段时,要使用 Form 要使用表单,需预先 ...
随机推荐
- 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
接口可以继承接口.抽象类可以实现(implements)接口,抽象类可以继承具体类.抽象类中可以有静态的main方法. 问: 抽象类是否可继承实体类 (concrete class) 答: 抽象类是 ...
- POJ 3211 Washing Clothes 背包题解
本题是背包问题,可是须要转化成背包的. 由于是两个人洗衣服,那么就是说一个人仅仅须要洗一半就能够了,由于不能两个人同一时候洗一件衣服,所以就成了01背包问题了. 思路: 1 计算洗完同一颜色的衣服须要 ...
- Webpack vs Gulp(转载)
理想的前端开发流程 在说构建工具之前得先说说咱期望的前端开发流程是怎样的? 写业务逻辑代码(例如 es6,scss,pug 等) 处理成浏览器认识的(js,css,html) 浏览器自动刷新看到效果 ...
- <img/>标签onerror事件在IE下的bug和解决方法
IE下打开网页时,会弹出“Stack overflow at line: 0”的弹框.经分析,这个bug是由于img标签的onerror事件引起的.程序中用到的代码片段如下:正常情况下显示src所指路 ...
- Spring学习笔记——Spring依赖注入原理分析
我们知道Spring的依赖注入有四种方式,各自是get/set方法注入.构造器注入.静态工厂方法注入.实例工厂方法注入 以下我们先分析下这几种注入方式 1.get/set方法注入 public cla ...
- mysql数据库使用mysqldump工具针对一个数据库备份,使用--databases选项与不使用该参数的区别
需求描述: 今天在做mysqldump备份某个数据库的试验,在备份某个数据库的时候可以使用 --databases参数,也可以直接进行某个数据库的备份,那么这里记录下两者的区别 操作过程: 1.使用- ...
- cocos2d 中使用jni C++ 调用 Java 方法
1.简单数据类型样例 如果我们Java中有这么一个open的静态方法,它没有參数,有一个int的返回值.怎么在C++中调用它呢? package cb.CbCCBLE; public class Cb ...
- swift swift学习笔记--函数和闭包
使用 func来声明一个函数.通过在名字之后在圆括号内添加一系列参数来调用这个方法.使用 ->来分隔形式参数名字类型和函数返回的类型 func greet(person: String, day ...
- 经典 MapReduce框架(MRv1)
在 MapReduce 框架中,作业执行受两种类型的进程控制: 一个称为 JobTracker 的主要进程,它协调在集群上运行的所有作业,分配要在 TaskTracker 上运行的 map 和 red ...
- Windows下重置Mysql密码
1.首先停止正在运行的MySQL进程 >net stop mysql 如未加载为服务,可直接在进程管理器或者服务中进行关闭. 2.以安全模式启动MySQL进入mysql目录在命令行下运行 > ...