官方文档中提到,有两种情况我们也许会指定一个view而不是用默认的那个:
- 一个对象有几个form或tree视图
- 想用一个关系字段(例如o2m)来改变form或tree视图
紧接着文档介绍了priority字段:
在视图的定义中我们可以使用priority字段,它的默认值是16.默认情况下,OpenERP会使用带有最高优先级(也就是最小数字)的tree视图来显示一个model。
为实现为每种视图指定一个view,有一个model叫 ir.actions.act_window.view,我们可以使用它来完美解决问题。我们定义一个record中仅包含4个field即可:
<record id="sunpop_action_customer_form_view1" model="ir.actions.act_window.view"> <field name="sequence" eval="1"/> <field name="view_mode">kanban</field> <field name="view_id" ref="base.res_partner_kanban_view"/> <field name="act_window_id" ref="felive_action_partner_customer_form"/> </record> <record id="sunpop_action_customer_form_view2" model="ir.actions.act_window.view"> <field name="sequence" eval="2"/> <field name="view_mode">tree</field> <field name="view_id" ref="felive_view_partner_customer_tree"/> <field name="act_window_id" ref="felive_action_partner_customer_form"/> </record>
还有一种快速写法,参考
<record id="sunpop_product_variant_action" model="ir.actions.act_window"> <field name="name">Product Variants</field> <field name="type">ir.actions.act_window</field> <field name="res_model">product.product</field> <field name="context">{'search_default_product_tmpl_id': [active_id], 'default_product_tmpl_id': active_id}</field> <field name="search_view_id" ref="felive_product_search_form_view"/> <field name="view_ids" eval="[(5, 0, 0), (0, 0, {'view_mode': 'tree'}), (0, 0, {'view_mode': 'form', 'view_id': ref('sunpop_product_variant_easy_edit_view')}), (0, 0, {'view_mode': 'kanban'})]"/> </record> 更多细节,可以到官方市场搜索我们的模块
Stock Location Kanban
里面有类似的应用,将库存位置管理的action用代码重载。