在mykid的视图里添加一个智能按钮,可以显示出该用户的订单数量有几笔
点击后可跳转至筛选后的tree页面,展示详细订单。
代码部分的xml视图,添加到 mykid_form视图中:【升级后就能看到智能按钮的图标,可以先不写逻辑,直接【action_mykid】里边print看一下效果也行】
其中【value2】是一个计算字段。智能按钮的图标icon,按钮名<span>按钮名</span>可以根据自己需要的按钮功能来更改,button的name为action_mykid是要在py中定义这个方法的。
mysale_name = fields.Many2one('mysale.mysale', string="用户姓名")
value2 = fields.Integer(compute='_compute_value2')
def action_mykid(self):
return {
'type': 'ir.actions.act_window',
'name': 'mysale_tree',
'res_model': 'mysale.mysale',
'view_mode': 'tree,form',
'domain': [('name', '=', self.mysale_name.name)],
'target': 'current',
}
基本逻辑:使用domain匹配到本模型中【mykid】的mysale_name的value值与【mysale】中的name值匹配姓名的订单数量。
完整xml的form视图代码:
<record model="ir.ui.view" id="mykid_list_form">
<field name="name">mykid_form</field>
<field name="model">mykid.mykid</field>
<field name="arch" type="xml">
<form>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="action_mykid" class="o_stat_button" icon="fa-calendar" type="object">
<div class="o_stat_info">
<field name="value2" class="o_stat_value"/>
<span class="o_stat_text">Test</span>
</div>
</button>
</div>
<group class="top">
<group class="left">
<field name="mysale_name" string="用户姓名"/>
<field name="mysale_gender" string="用户性别" readonly="1" force_save="1"/>
</group>
<group class="right">
<field name="value" string="test_1"/>
<field name="value2" string="test_count" readonly="1"/>
</group>
</group>
<notebook>
<page string="my notebook" name="mysale_notebook">
<group>
<field name="mysale_name"/>
</group>
</page>
<page string="my notebook2" name="mykid">
<tree editable="bottom">
<field name="mysale_name"/>
</tree>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
使用动态视图的方式来添加智能按钮。(没有搞太懂,以后遇到了再研究,先记录一下):
<!-- test active_id -->
<record model="ir.actions.act_window" id="action_open_appointment">
<field name="name">appointments</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">mysale.mysale</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('product_id','=',active_id)]</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
这是一个提示信息!
</p>
</field>
</record>
在mysale的xml里添加:id为【action_open_appointment】
<div class="oe_button_box" name="button_box">
<button name="%(mysale.action_open_appointment)d"
class="o_stat_button" icon="fa-calendar" type="action">
<div class="o_stat_info">
<field name="product_id" class="o_stat_value"/>
<span class="o_stat_text">Test</span>
</div>
</button>
</div>
直接使用%(模型+动作)d的方式不需要在py中定义动作。不过效果并没有实现,也没有弄明白这个所谓的动态 active_id是什么意思,以后再搞。
【点击后】--->
原来案例里边是是一个计算字段:appointment_count
我的只是个m2o字段。不改了,知道是干什么用的就行了。