Odoo的五类动作

odoo框架中设置了五类动作可以快速实现业务功能

有能力的同学可看官方文档:https://www.odoo.com/documentation/10.0/reference/actions.html

官方文档的说明很无聊,不喜欢看!我想写几个栗子给大家说明一下:右边边画个彩虹
在这里插入图片描述
服务器动作和客户端动作的写法很相似,服务器动作py代码即可实现,客户端动作需要js配合完成。
一、服务器动作
1.服务器动作-菜单(下面这种写法的菜单出现在删除、导出菜单的位置, 也可以使用普通的菜单menu)


版本比较
client_action_multi
action
lims.dvp.project


Id: 服务器动作的外部识别ID model:ir.values 固定
model_id: 动作出现在哪个模型上,格式:模块名.model_模型名
name: 动作的显示名称
key2: client_action_multi, 固定值
key: action 固定值
model: 模型名,_name属性的值
value: ‘ir.actions.server’ + str(ref(服务器动作的外部id))
2.服务器动作-动作(动作要写在菜单前面,菜单指向一个动作,动作要在菜单之前加载)

版本比较

ir.actions.server
code
action=records.select_proj_history_version()

id : 动作的外部id model:ir.actions.server 固定值
name: 动作的名称
model_id: 动作依赖的模型, ref=’’模块名.model_模型名‘’
type: 动作类型, 固定值ir.actions.server
state: code 固定值
code: action=records.function() function()是在模型里定义的multi方法,服务器动作真正要执行的东西都写在这个方法里面,这个方法可以获得一个上下文:self._context().get(‘active_ids’) 返回选中的记录的id的集合ids

二、客户端动作
1.客户端动作的菜单同服务器动作的菜单基本一致,同样可以使用普通的菜单


版本比较
client_action_multi
action
lims.dvp.project


除了value与服务器动作不一样,其他全部一样
value: ‘ir.actions.client’ + str(ref(‘动作的外部id‘))
2.客户端动作-动作

App Store
apps
{}

客户端动作的动作写法比较简单
name: 动作的名称 tag: js里面注册的方法 
context:上下文,js里面可通过self.context的方式获取到
params: 传到js里面的参数json格式(python字典),可作为function(params){
params[key]}的参数直接使用

三、URL动作
1.URL动作的菜单:url动作也可以使用普通的菜单,或者如下菜单:


100
open

id: 动作的外部识别ID model: ir.actions.todo (不知道写出来是什么效果)
action_id: 动作的外部识别ID
sequence:填一个数字,不明确意义(可省略该属性)
state: open
2.URL动作-动作

Forum
self
/page/contactus

id: 动作的外部识别ID model: ir.actions.act_url , 固定写法
name: 动作的名称
target: self
url: 动作指向一个路由路径,改路径需要在controller里面定义一个任意名称的方法,
@http.route(’/page/contactus, type=‘http’, auth=‘user’)
def method(self, **kw):
pass

猜你喜欢

转载自blog.csdn.net/qingdao_program/article/details/103336501
今日推荐