You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否为Odoo现有模型创建新视图?自定义视图需求咨询

实现单个模型多视图(Odoo 16)

核心思路

Odoo中模型和视图并非紧耦合,每个视图可独立定义,通过**动作(Action)**关联模型与视图。你只需为Contact模型创建自定义的tree、form视图,再绑定对应的动作,就能实现仅显示指定字段的需求,同时完全保留原视图的功能。

具体实现代码

假设你的自定义模块名为custom_contact_view,以下是关键文件的实现代码:

1. 定义自定义视图(views/contact_views.xml)

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <!-- 自定义Tree视图 -->
    <record id="view_res_partner_custom_tree" model="ir.ui.view">
        <field name="name">res.partner.custom.tree</field>
        <field name="model">res.partner</field>
        <field name="arch" type="xml">
            <tree string="简化联系人列表">
                <field name="name"/>
                <field name="phone"/>
                <field name="email"/>
                <field name="company_id"/>
            </tree>
        </field>
    </record>

    <!-- 自定义Form视图 -->
    <record id="view_res_partner_custom_form" model="ir.ui.view">
        <field name="name">res.partner.custom.form</field>
        <field name="model">res.partner</field>
        <field name="arch" type="xml">
            <form string="简化联系人详情">
                <sheet>
                    <group>
                        <field name="name"/>
                        <field name="phone"/>
                        <field name="email"/>
                        <field name="company_id"/>
                    </group>
                </sheet>
            </form>
        </field>
    </record>
</odoo>

2. 定义关联动作(views/contact_actions.xml)

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <!-- 自定义动作:关联模型与自定义视图 -->
    <record id="action_res_partner_custom" model="ir.actions.act_window">
        <field name="name">简化联系人</field>
        <field name="res_model">res.partner</field>
        <field name="view_mode">tree,form</field>
        <!-- 指定动作使用的自定义视图集合 -->
        <field name="view_ids" eval="[(5,0,0), (0,0, {'view_mode': 'tree', 'view_id': ref('custom_contact_view.view_res_partner_custom_tree')}), (0,0, {'view_mode': 'form', 'view_id': ref('custom_contact_view.view_res_partner_custom_form')})]"/>
        <field name="context">{'search_default_is_company': False, 'default_is_company': False}</field>
    </record>

    <!-- 可选:将动作添加到系统菜单,方便快速访问 -->
    <menuitem id="menu_res_partner_custom" name="简化联系人" parent="base.menu_contacts" action="action_res_partner_custom"/>
</odoo>

3. 更新模块配置文件(__manifest__.py)

确保在data字段中引入上述视图和动作文件:

{
    'name': 'Custom Contact Views',
    'version': '1.0',
    'depends': ['base'],
    'data': [
        'views/contact_views.xml',
        'views/contact_actions.xml',
    ],
    'installable': True,
    'auto_install': False,
}

关键说明

  • 视图独立性:自定义视图通过唯一id与原视图区分,不会覆盖或影响原视图的使用。
  • 动作绑定逻辑:通过ir.actions.act_window的view_ids字段,明确指定该动作关联的视图集合,实现动作与视图的绑定,而非模型与视图的强耦合。
  • 菜单访问:添加menuitem后,用户可在系统菜单中直接切换到简化视图,原联系人菜单仍保留默认完整视图。

验证方式

安装/升级模块后,在菜单中找到「简化联系人」选项,点击即可看到仅包含指定字段的tree和form视图,原「联系人」菜单功能不受任何影响。

内容的提问来源于stack exchange,提问作者JamesHoux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:33:12