定制表单字段
调整表单字段的默认展示
平台自带的字段类型比较少,但是可以通过定制,提供更多字展示形式。
2 使用字段插件定制查看、编辑
不同类型的字段脚本命名前缀不同:
- widget_line_ : 单行
- widget_lines_ :多行
- widget_text_ : 文本框
- widget_int_ :整数
- widget_bool_ :布尔
- widget_ref_ : 内容选择字段
每个脚本的写法为:
def widget_line_forms(mode, form_name, value, field, options):
其中:
mode: 脚本使用场景:
- view:返回字段显示的渲染结果
- edit:返回字段编辑的渲染结果
- text: 返回字段纯文本方式展示结果
value:字段保存的值(用于编辑和查看)
field: 字段的信息,是一个dict,包括的key:
- name: 字段名
- multiple: 是否多选
form_name: 表单在编辑时的input名字
options: 使用字段的时候,可以和一个同名的表单关联,用于输入字段的一些设置参数,options是存放了这些设置信息的一个dict对象。
3 定制字段的搜索子表单(search_form)
在搜索模式,每个字段,可以包括多个子字段联合搜索,比如:
- 搜索方式:任何一个、全部
- 开始时间、结束时间
可定义一个表单,用于渲染这个字段的搜索子字段。
- 表单命名约定为 : search_ 前缀
- 表单的”当更改时“ 触发脚本中,将表单字段,转换为搜索query_json并返回
- 如果定制单选/多选字段,搜索子字段中的所有单选/多选字段如果可选值为空,会自动使用原始字段的可选值
4 定制字段的统计分组子表单(stat_form)
每个字段,可以进行统计分组,每个统计分组也是一个子表单。
统计分组表单 是插件脚本的名字前加上 stat_group_
这个表单的 update 触发脚本,对提交表单的数据进行规整,返回最终用户 QuerySet 分组的json字符串。
5 例子
定制title字段的搜索形式,支持部分匹配、全部匹配的下拉选项:
创建一个字段定制脚本,例如widget_line_test, 脚本留空或者直接返回None;
选择定制字段的展示形式(widget_line_test);
创建一个表单,命名为search_widget_line_test;
添加多选文本字段,operator 定制展示方式 下拉选择,具体参照zopen.widgets
编写【当保存时】脚本,返回可用的query_json格式,该脚本可以使用result,field_name两个参数,其中:
- result为当前表单提交后得到的result, 例如{'operator': 'anyof', 'value': 'test'},
- field_name为被定制字段的name, 例如本例子中的title;
在应用市场,安装相关软件包,可参考如下定制表单字段示例:
- 颜色选择字段
- 手写签字字段