django动态表格总结
应用场景: A与B之间存在一对多关系.
CBV实现方案:
CreateView/UpdateView + inlineformset + jquery
具体:
view方面:重写post/get方法, 或者 get_context_data/form_valid方法。
template方面:注意利用can_delete属性,{{form.DELETE}},将已存在的记录打上true标记,则在保存时自动删除相应记录。
jquery:注意元素的准确定位。这里罗嗦下:判断一行是否是已经存在的行还是新增加的(尚未保存到db)的行的方法是判断{{form.id}}生成的隐藏域的value是否为""或者undefined,如果是,则为新增的行,可以用jq将此行remove掉,同时不要忘了更新所有的控件的id以及行数保存的隐藏域的值。
$.each(function(index, each_obj){}). (index在重新排定id时比较有用)
$.parent() (取得直接父元素)
$.parents() (取得所有父元素)
$.children() (取得所有子元素)
$.children().children() (此用法暂时还没明了过来)
通配符: $("[attr *= bbb]") ,$("[attr ^= bbb]") ,$("[attr $= bbb]") 分别是contains,start_with,end_with逻辑。
inlineformset的html操作的核心在于:
1) 行数(在隐藏域)
2) DELETE标志/id,在修改的时候是必需的
3) 至少要extra=1,多出一行的处理(hide/show),且此行作为模板行,隐藏起来。
4) 多种记录存在一个formset里面的处理(新增的记录,修改的记录,删除的记录),其中修改的记录和新增的处理比较简单--基本不用特别处理; 删除的情况有点复杂,删除原有的记录,还是删除新增加的记录,这个要人工判断,根据id隐藏域是否有value值,再相应的给delete标志位打标志。
简单示例可以查看这里:https://github.com/TommyU/dynamic_form
django动态表格总结的更多相关文章
- 在<s:iterator>标签里给动态表格添加序号
在<s:iterator>标签里给动态表格添加序号,需要用到<s:iterator>标签里的Status属性里的count eg:<s:iterator value=&q ...
- HTML5&CSS3经典动态表格
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- django 动态更新属性值
django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...
- 5.11-5.15javascript制作动态表格
制作动态表格的主要是运用js中表格类的insertRow.insertCell简易添加行和列的代码,不过要注意每行添加的表格是有位置行编号的,每行的编号为rows.length-1,增加的表格内的标签 ...
- Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...
- jQuery的下面是动态表格动态表单中的HTML代码
动态表格动态表单中的Jquery代码 <script type="text/javascript" src="/include/jquery/jquery-1.1. ...
- JavaScript 创建动态表格
JavaScript 创建动态表格 版权声明:未经授权,严禁转载! 案例代码 <div id="data"></div> <script> va ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- jQuery动态表格插件 AppendGrid
AppendGrid是一个jQuery动态表格插件,提供像填写电子表格数据一样在页面去输入结构化数据. 它允许用户在表格里增加/删除/插入/删除行,控制input/select/textarea 提交 ...
随机推荐
- 第四十一课:CSS3 animation详解
animation是css3的另一个重要的模块,它成型比transition晚,吸取了Flash的关键帧的理念,实用性高. animation是一个复合样式,它可以细分为8个更细的样式. (1)ani ...
- UITableViewdataSourse的协议所有方法
UITableViewDataSource @required- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection ...
- α发布后的感想(组长作业)
今天α发布后,组长作业,谈谈心得体会,谈谈哪些做的好的地方,哪些做的不好.耐撕团队组长因有事缺席,耐撕团队的α发布由齐同学来主持,所以这个作业由齐同学代理. 先谈谈耐撕团队在α发布会中齐同学认为做的好 ...
- Daily Scrum – 1/7
Meeting Minutes 搞定了一个bug,单词面板滚动条的bug: 在电脑屏幕上的屏幕适配有了新思路: Progress part 组员 今日工作 Time (h) 明日计划 Time ( ...
- 【前端】less学习
Less 是什么? Less is more,than CSS. Less就是搞笑高效编写和维护CSS的一种语法. 1.下载Koala考拉,一款国人编写的less开发器. 2.可以用Sublime T ...
- 【CodeForces 626E】Simple Skewness
题意 给出n个数的集合,求一个 (平均数-中位数)最大 (偏度最大)的子集,输出子集元素个数和各个元素(任意顺序). 分析 因为是子集,所以不一定是连续的序列.然后我们有下面几个结论. 1.最大偏度一 ...
- [IOS UIScrollView+PageControl]信息展示横幅
ScrollViewController.h #import <UIKit/UIKit.h> @interface ScrollViewController : UIViewControl ...
- TCP/IP详解 学习三
网际协议 ip Ip 是不可靠和无连接的 ip首部 4个字节的 32 bit值以下面的次序传输:首先是 0-7 bit,其次 8-15 bit,然后 1 6-23 bit,最后是 24~31 bit. ...
- 使用multi curl进行http并发访问
curl是一款利用URL语法进行文件传输的工具,它支持多种协议,包括FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET等,我们既可以在命令行上使用它,也可以利用 libcur ...
- MyEclipse------如何在特定目录下创建文件夹
Directory.jsp <%@ page language="java" import="java.util.*" pageEncoding=&quo ...