ODOO18菜鸟二次开发系列(6)-自定义QWEB组件,ODOO18List(Tree) 视图增加按钮


前言

从本章开始内容将比较深,建议至少看完开发手册再继续:

odoo18的联系人和此前的一样,联系人中包含了人和法人(公司),打开后看起来非常杂乱,此前因为学的不够深入,因此只能靠默认筛选功能去设置,但对于很多新用户来说,筛选其一要点两次,其二不够直观,因此准备在“新建”动作的侧面加一个仅显示公司的按钮,点击后清单视图自动只保留公司,效果如下。在这里插入图片描述


一、总体思路

最开始用AI去自动修改,但被误导到将按钮加到list的字段中,比如如下的继承写法

            <xpath expr="//list" position="attributes">
                <attribute name="editable">bottom</attribute>
            </xpath>
            <xpath expr="//list/field[@name='complete_name']" position="after">
                <button name="action_view_company" type="object" string="查看" class="oe_highlight" title="查看公司信息"/>

然后就得到了前图中“查看”的状态,每行显示一个botton,刚好因为设置了editable,无法点击查看,因此顺带设置action_view_company可点击打开表单视图,注意new时可浮窗,current新窗。

    def action_view_company(self):
        self.ensure_one()
        # 返回打开公司表单视图的动作
        return {
   
            'type': 'ir.actions.act_window',
            'name': _('Company'),
            'res_model': 'res.partner',
            'res_id': self.id,
            'view_mode': 'form',
            'target': 'new',  # 在当前窗口打开
            'views': [[False, 'form']], # 强制使用表单视图
        }

此后因为比较菜,在源代码内试了将 <button放到<list前面,弹出错误说<list前面不能时data,印象form视图前面可以时 <button和<div的,这样说的话只能另外想办法。最后参考任务列表,另外加CSDN搜索,了解到可以list 内加js-class实现按钮。
总体思路是,创建js_class组件,设置对应的动作和模板,然后组件可放到<list 内。比较奇怪的是“新建”按钮还没有发现在那里。

二、创建步骤

1.文件架构

在这里插入图片描述

2.视图调用

crm_extension_views中作为list的属性调用,注意AI一直沉迷于旧版tree,必须强制唤醒为list。

    <record id="view_partner_tree_inherit_list" model="ir.ui.view">
        <field name="name">res.partner.tree.inherit.list</field>
        <field name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值