能否为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
相关产品推荐
相关产品推荐

