官方文档中提到,有两种情况我们也许会指定一个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用代码重载。