热门关键字:
jquery > jquery教程 > jquery教程 > json灵活表单配置

json灵活表单配置

294
作者:管理员
发布时间:2021/6/4 15:11:57
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=4875
  有时候为了配置的灵活性、应用未来的需求变化、控制单张表的字段数,避免字段过多,会把一些字段设置是Json格式。


  这样的好处是,后面如果突然需要加多一个字段,就可以直接在加到这个json里面,既不用修改数据表,也不用修改程序,只要通知前端我在json里面加了一个字段就好了,对于未来字段设置不确定或者随时改变的情况是非常方便。


  但有一个不好的地方就是,配置起来很麻烦,后台可能是给到一些不懂技术的人用,他们看到这么个东西就很一脸蒙蔽,甚至有时候技术自己可能出配着配着一不小心少了个引号,少个了逗号导致json格式错误,这就会导致程序解析json错误然后出现异常,影响了线上应用。所以这样的后台对于懂技术不懂技术的人来说都是一个挑战。


  所以我就想着把这个json,拆解成一个表单的形式


  这样看起来是不是就直观很多,不管是谁来用这个后台都能很轻易的上手。


  原理也很简单。


  加载时:


  第1步:把 json 解析出来,把?json 里的每个字段当做是 model 的单个独立的字段去处理,赋值到对象上;


  第2步:自定义一个表单 form , 把这些从 json 解析出来的字段也显示到管理后台上。


  写入时:


  第1步:接收自定义表单传过来的数据后进来验证(看需求要不要做一些数据验证)


  第2步:把数据封装成 json 后再赋值到 model 上保存该 json 的字段,然后写入数据库保存。


  实现思路就这么几步,很简单,只是编码过程中会存在一些细节的问题,下面通过编码来把上面的步骤走一遍。


  要处理刚从数据库读出来的数据,只需要重写一下 Model 类的一个类方法from_db


  下面这一段是源码的from_db方法


  那我们要做的就是在自己的 Model 中重写这个方法,然后先调用父类的from_db方法完成数据的加载


  下面是我实现的把 json 解析成 model 对象字段的代码,我封装成一个类,哪个 model 需要解析 json 的直接继承这个类就好了


  有 2 个地方说明一下:


  代码中的是设置到 instance 上的字段名,prefix 指的是 json 字段的字段名,后面接 3个下划线(因为2个下划线是外键的读取方法,避免冲突),然后接上 json 是的 key。如:params= --> params___test


  这段代码是为了把图片解析成 ImageFieldFile 类型,这样图片在后台显示的样式就是上图的样子,这样方便图片的上传设置,否则会以图片链接的形式显示在后台。


  上面我们已经把 json 解析成对象的普通字段了,现在要做的就是把这些字段像 model 定义好的字段一样显示在后台。


  这里先假设数据表里有一个这样的 json 字段,方便理解:


  我们定义一个 form 如下:


  这里主要是重写了 ModelForm 的 clean 方法,在里面将特定数据封装成 json 然后再保存到 model 中。代码功能都带注释了。


  clean 里面的逻辑最好是自己跟着实现一遍,调试一下,直观的看封装过程会更容易理解,单看代码可能会有点难理解。


  最后一步,把上面写好的 form , 添加到admin中,还可以加一个tab,把自定义的表单单独出来一个 tab ,避免很多字段揉杂在一起显得乱。




如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:jquery
友荐云推荐