应用场景: 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动态表格总结的更多相关文章

  1. 在<s:iterator>标签里给动态表格添加序号

    在<s:iterator>标签里给动态表格添加序号,需要用到<s:iterator>标签里的Status属性里的count eg:<s:iterator value=&q ...

  2. HTML5&CSS3经典动态表格

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. django 动态更新属性值

    django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...

  4. 5.11-5.15javascript制作动态表格

    制作动态表格的主要是运用js中表格类的insertRow.insertCell简易添加行和列的代码,不过要注意每行添加的表格是有位置行编号的,每行的编号为rows.length-1,增加的表格内的标签 ...

  5. Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)

    Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...

  6. jQuery的下面是动态表格动态表单中的HTML代码

    动态表格动态表单中的Jquery代码 <script type="text/javascript" src="/include/jquery/jquery-1.1. ...

  7. JavaScript 创建动态表格

    JavaScript 创建动态表格 版权声明:未经授权,严禁转载! 案例代码 <div id="data"></div> <script> va ...

  8. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

  9. jQuery动态表格插件 AppendGrid

    AppendGrid是一个jQuery动态表格插件,提供像填写电子表格数据一样在页面去输入结构化数据. 它允许用户在表格里增加/删除/插入/删除行,控制input/select/textarea 提交 ...

随机推荐

  1. Xdebug开源PHP程序调试器

    Xdebug是一个开放源代码的PHP程序调试器(即一个Debug工具),可以用来跟踪,调试和分析PHP程序的运行状况. 本文为大家讲解的是在linux下xdebug的安装和配置方法,感兴趣的同学参考下 ...

  2. 每天一个linux命令(6):mv命令

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录. 1.命令格式: mv [选项] 源文件或目 ...

  3. 阿里面试回来,想和Java程序员谈一谈(转载)

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  4. nginx 的中文配置详细解释

    文章转自:http://www.ha97.com/5194.html 更详细的模块参数请参考:http://wiki.nginx.org/Main #定义Nginx运行的用户和用户组 user www ...

  5. Opentack常用技巧

    这篇博客将收集一些openstack里的使用技巧. 1. which dhcp agent is hosting the network?   2. 各个网桥port命令规则 grep for por ...

  6. Owin中间件搭建OAuth2.0认证授权服务体会

    继两篇转载的Owin搭建OAuth 2.0的文章,使用Owin中间件搭建OAuth2.0认证授权服务器和理解OAuth 2.0之后,我想把最近整理的资料做一下总结. 前两篇主要是介绍概念和一个基本的D ...

  7. CVE-2014-4877 && wget: FTP Symlink Arbitrary Filesystem Access

    目录 . 漏洞基本描述 . 漏洞带来的影响 . 漏洞攻击场景重现 . 漏洞的利用场景 . 漏洞原理分析 . 漏洞修复方案 . 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络 ...

  8. CF Gym 100685E Epic Fail of a Genie

    传送门 E. Epic Fail of a Genie time limit per test 0.5 seconds memory limit per test 64 megabytes input ...

  9. UVA 1149 Bin Packing

    传送门 A set of n 1-dimensional items have to be packed in identical bins. All bins have exactly the sa ...

  10. auto,register,static实例

    #include <stdio.h>int main() {    auto int i = 0;    register int j = 0;    static int k = 0;  ...