最近在写odoo项目的时候遇到一个问题,需要在不同的菜单中展示出状态不同的一个模型的数据,其中一个视图上没有header,另一个视图上需要有:
<header>
<button type="object" name="btn_cancel" states="draft,wait" string="取消" confirm="确认取消?"/>
</header>
问题就出现在写完没有header视图上的东西以后,发现两个视图上都没有header上的按钮显示,就好像新写的视图把原来的视图覆盖了一样,心想肯定是两个视图用串了,需要一个东西来固定住这个视图的按钮触发的是这个视图上的form或者tree,于是查阅资料发现了这个:
<record id="cloud_sale_order_action" model="ir.actions.act_window">
<field name="name">销售订单</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">cloud.sale.order</field>
<field name="search_view_id" ref="cloud_sale_order_search"/>
<field name="context">{'order_type':'normal','search_default_half_day':1}</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('order_type','=','normal'),('state','!=','cancel')]</field>
</record>
<record id="cloud_sale_order_action_view_tree" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>#视图类型
<field name="view_id" ref="cloud_sale_order_tree"/>#tree视图对应id
<field name="act_window_id" ref="cloud_sale_order_action"/>#对这个action触发视图的约束
</record>
<record id="cloud_sale_order_action_view_form" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">form</field>
<field name="view_id" ref="cloud_sale_order_form"/>
<field name="act_window_id" ref="cloud_sale_order_action"/>
</record>
其中下面两个record是指定cloud_sale_order_action这个按钮触发的tree和form视图的,问题解决!