自定义odoo附件合集

组件1:无限级联组件

在这里插入图片描述

无限级联组件使用说明

使用场景

  • 省市区/县的选择
  • 部门选择、及部门以下人员的选择
  • 以及其他级联适合使用的场景

优缺点

  • 优点1:无限级联,通用性强,放之四海而皆准
  • 优点2:数据可以一张表,也可以多张表
  • 优点3:字段微组件形式,卸载安装方便
  • 缺点1:在进入编辑状态时候,暂时没有实现数据的回显,逻辑复杂

模块名

模块名定义为:widget_cascade,

calss参数说明

参数名类型是否必填默认值说明
classstringcascade_style级联组件的基础样式,可以自己再新增类名,进行样式覆盖

widget参数说明

参数名类型是否必填默认值说明
widgetstringcascade_widget是级联字段微组件的名称,只能为cascade_widget

options参数说明

参数名类型是否必填默认值说明
relationModelsarray[]至少配置一个模型, 关联模型的列表(从父模型到子模型)

relationModels参数说明

参数名类型是否必填默认值说明
modelstringxxx模型名称
name_fieldstringname字段名称
alive_fieldstringactive标记数据是否激活的字段名称
parent_id_fieldstringxxx关联父级模型的字段,当单模型状态时,此参数必填;当多模型时,最顶级模型可以不填此参数,其余模型,必填此参数

如下

单级模型时
<field name="yourField"
        widget="cascade_widget"
        class="cascade_style"
        options="{
            'relationModels': [
                {
                'model':'widget_cascade.all_in_one',
                'name_field':'name',
                'parent_id_field':'parent_id',
                }
            ]
        }"
/>

多级模型时
<field name="yourField"
        widget="cascade_widget"
        class="cascade_style"
        options="{
            'relationModels': [
                {
                    'model':'widget_cascade.sheng',
                    'name_field':'name',
                },
                {
                    'model':'widget_cascade.shi',
                    'name_field':'name',
                    'parent_id_field':'parent_id',
                },
                {
                    'model':'widget_cascade.xian',
                    'name_field':'name',
                    'parent_id_field':'parent_id',
                }
            ]
        }"
/>

widget_cascade字段微组件返回值说明

返回值示例:
'{"ids":"1-2-3-4","names":"四川省-成都市-新都区-zx街道","models":"widget_cascade.all_in_one-widget_cascade.all_in_one-widget_cascade.all_in_one-widget_cascade.all_in_one"}'

返回值是一个字符串对象,
ids:选中级联数据的对应id
names: 选中级联数据的对应名称
models:选中级联数据的对应模型

备注:顺序是一一对应的

说明:如果你的页面主要展示名称,那么你需要另起一个字段来切分数据,如下
yourField = fields.Char(string='选择时候名称')
name = fields.Char(string='展示时候名称',compute='_computr_name')
@api.depends('yourField')
def _computr_name(self):
    for rec in self:
        if rec.yourField:
            rec.name = eval(rec.yourField).get('names')
        else:
            rec.name = None

使用方式

  1. 在你的模型里定义字段
yourFields = fields.Char(string='地名')

特别注意:yourFields禁止取名为name,根据odoo机制,name字段会默认显示在面包屑上面
  1. 在你的XML定义
<field name="yourFields" class="cascade_style" widget="cascade_widget"/>

yourFields: 为你模型中定义的字段名称
cascade_widget: 是级联字段微组件的名称,只能为cascade_widget

组件2:自定义odoo附件上传阿里云小部件

  • 模块文件夹:attachment_upload_to_oss
  • 安装:项目里面搜索上传附件至阿里云服务器组件安装
  • 定义字段
cover1 = fields.Char(string='上传附件1')
  • 默认用法
<field name="cover2" widget="new_field_upload_files"/>
  • 自定义用法
<field name="cover1"
       widget="new_field_upload_files"
       options="{
           'label': '我是按钮',
           'maximum': '5',
           'maxsize': '20mb',
           'dir': 'wt_student',
           'suffix': 'jpg,jpeg,gif,png,JPG,JPEG,GIF,PNG,pdf,PDF'
      }"
/>
参数名类型是否必填默认值说明
labelstring上传按钮上显示的文字
maximumstring不限个数上传文件的最大个数
maxsizestring不限制大小传单个文件的大小限制
dirstringsource上传到阿里云服务器存放的文件夹名
suffixstring不限制上传文件的后缀,填写在后面的就是可以上传的文件类型
  • 源码:略

组件3:自定义odoo选择周组件

  • 模块文件夹:week_selector
  • 安装:项目里面搜索week_selector安装
  • 定义字段
selector_week = fields.Char(string='选择周')
  • 默认用法
<field name="selector_week" widget="week_selector"/>
  • 自定义用法
<field name="selector_week"
       widget="week_selector"
       options="{
           'format': 'week'
      }"
/>
参数名类型是否必填说明默认返回类型
formatstring配置返回值类型2021-W35|2021-08-30|2021-08-31|2021-09-01|2021-09-02|2021-09-03|2021-09-04|2021-09-05
  • format参数值
参数值返回类型返回类型示范
weekstring2021-W32
datestring2021-08-16|2021-08-17|2021-08-18|2021-08-19|2021-08-20|2021-08-21|2021-08-22
  • 源码:略
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值