odoo14向导菜单,设置搜索条件,点击搜索
效果图
定义两个所需的模型
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class xxtr(models.Model):
_name = 'xxtr.xxtr'
_description = 'xxtr.xxtr'
name = fields.Char()
value = fields.Integer()
value2 = fields.Float(compute="_value_pc", store=True)
description = fields.Text()
@api.depends('value')
def _value_pc(self):
for record in self:
record.value2 = float(record.value) / 100
class XXWizard(models.TransientModel):
# 要点1: 使用瞬态模型
_name = 'st.wizard'
name = fields.Char('名字')
age = fields.Char('年龄')
# // 要点2:这些字段在弹窗中由用户赋值
@api.model
def default_get(self, default_fields):
"""
为向导赋默认值。
"""
result = super(XXWizard, self).default_get(default_fields)
result.update({
'name': '你好',
})
return result
# type: # 动作类型,默认为ir.actions.act_window
# view_type: 跳转时打开的视图类型
# view_mode: 列出允许使用的视图模式
# context: 给目标视图传参数,如默认搜索之类的,如{‘search_default_group_assign’:1}
# limit: 列表视图一页的记录数
# target: 打开新视图的方式,current是在本视图打开,new是弹出一个窗口打开
# auto_refresh:为1时在视图中添加一个刷新功能
# auto_search:加载默认视图后,自动搜索
# multi:视图中有个更多按钮,若multi设为True, 更多按钮显示在tree视图,否则显示在form视图
# res_model:想打开视图的对应模块
# res_id: 参数为id,加载指定id的视图,但只在view_type为form时生效,若没有这个参数则会新建一条记录
# view_id: 参数是id,若一个模块有多于>1个视图时需要指定视图id,可根据视图名称去ir.ui.view模块搜索
# views:是(view_id,view_type) 元组对列表,第一组是动作默认打开的视图
# flags: 对视图面板进行一些设置,如{‘form’: {‘action_buttons’: True, ‘options’: {‘mode’: ‘edit’}}}即对form视图进行一些设置,action_buttons为True时调出编辑保存按钮,options’: {‘mode’: ‘edit’}时则打开时对默认状态为编辑状态
def action_tw_base_price_quotation(self):
value = self.name
return {
'type': 'ir.actions.act_window',
'res_model': 'xxtr.xxtr',
# 'limit':1,
'name':'xxtr window',
'multi':True,
'auto_refresh':1,
# 'view_type': 'form',
# 设置过滤条件search_default_+所需判断的字段名
'context': {'search_default_name':value},
'view_mode': 'tree,form',
# 'views': [(True, "tree")],
'target': 'main',
'auto_search': True,
}
定义视图
<odoo>
<data>
<!-- explicit list view definition -->
<record model="ir.ui.view" id="xxtr_list">
<field name="name">xxtr list</field>
<field name="model">xxtr.xxtr</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="value"/>
<field name="value2"/>
</tree>
</field>
</record>
<!-- actions opening views on models -->
<record model="ir.actions.act_window" id="xxtr_action_window">
<field name="name">xxtr window</field>
<field name="res_model">xxtr.xxtr</field>
<field name="view_mode">tree,form</field>
</record>
<record id="view_wizard_form" model="ir.ui.view">
<field name="name">name</field>
<field name="model">st.wizard</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="age"/>
</group>
<footer>
<button string="取消" class="oe_link" special="cancel"/>
<!-- type选择object,type 值可以是 workflow, object action 默认是 workflow-->
<!-- name是需要定义的方法名-->
<button string="自定义搜索" name="action_tw_base_price_quotation" type="object" class="oe_highlight"
/>
</footer>
</form>
</field>
</record>
<record id="action_wizard" model="ir.actions.act_window">
<field name="name">视图</field>
<field name="res_model">st.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem name="向导视图" id="xxtr.menu_root"/>
<menuitem name="Menu 1" id="xxtr.menu_1" parent="xxtr.menu_root"
action="xxtr_action_window" sequence="1"/>
<menuitem name="高级搜索" id="xxtr.menu_2" parent="xxtr.menu_root" action="action_wizard" sequence="3"/>
</data>
</odoo>
应该都看得懂了,就不过多说明了