Odoo的ir.values
2017-01-06 22:21
218 查看
特殊的ir.values
ir.value这个模型有点特殊。它的特殊首先体现为它对应的菜单和界面有两个:
/Setting/Technical/Actions/Action Bindings
/Setting/Technical/Actions/User-defined Defaults
两个用途
通过它有两个菜单相信大家都能猜出来:1)动作的绑定。2)储存用户自定义的默认值。因为
ir.values是历史遗留产物,这个模型可能会在以后的版本被替换或者更新,大家开发的时候注意不要显式依赖它。
首先来看看
ir.values的这两个字段:
key:定义这个
ir.values的用途。
action(默认值):表示用于绑定动作。
default:表示用语用户默认值
model:这个动作绑定或者用户默认值适用的模型对象。
以上两个字段是
ir.values两种用途都要用到的字段,接下来我们单独来看看他们各自用途的例子。
用户定义的默认值
在Odoo 10.0版本用户默认值的定义首先需要开启开发者模式,然后在开发者菜单里面选择Set Defaults,在弹出的窗口里面选择好默认值之后,系统就会根据你当前的对象和所选择的默认值创建一条ir.values记录。
然后我们可以打开上面介绍过的用户默认值菜单,找到刚刚自动创建的记录。在
ir.values作为默认值使用的时候还可以设置:
name:默认值对应的字段。
condition:此默认值生效的条件。
user:在此登陆用户登录的时候默认值生效,为空则对所有的用户都生效。
company:默认值生效的公司。
Default value or action reference:默认值的值。如果是数字或者字符串的默认值,你可以直接在这修改,如果是many2one的在这里直接改是不会生效的。
动作绑定
这个一般是开发人员才会用到……嗯,好吧,其实开发人员一般也不会用到:-P。我们先描述下这个“动作绑定”是什么,就是我们在打印下拉菜单里点击打印报表动作,在更多下拉菜单里的动作(还有就是树状菜单的点击动作,这个在新版本里面基本上已经绝迹了)。
这时候开发人员可能会说:“你说的不就是
<report>,
<act_window>吗?”
没错的上面的两种标签在Odoo里面叫shortcut,也就是一种便捷写法。例如当我们用
<report>的时候,系统会做两个操作,首先是创建一个
ir.actions.report.xml的记录,然后创建一个
ir.values的记录。就是这条记录让我们可以在系统的print菜单下打印报表。现在来看看销售订单报表对应的
ir.values。
Qualifier:可选值有
client_print_multi:绑定动作到打印下拉菜单
client_action_multi:绑定动作到更多/动作下拉菜单
client_action_relate:绑定动作到表单的超链接(V7前),现在也是绑定动作到更多/动作下拉菜单。
tree_but_open:绑定动作到树形菜单(很少使用)。
Action Reference: 绑定的动作和id,动作和id是通过逗号分隔。如下代码,可以通过ref()来取得对应动作的数据库id
<record model="ir.values" id="sale_order_line_make_invoice"> <field name="model_id" ref="sale.model_sale_order_line" /> <field name="name">Invoice Orders</field> <field name="key2">client_action_multi</field> <field name="value" eval="'ir.actions.act_window,' + str(ref('action_view_sale_advance_payment_inv'))" /> <field name="key">action</field> <field name="model">sale.order</field> </record>
为什么要显式使用ir.values
?
首先我们上面说的动作action是包含了:
窗口动作 (ir.actions.act_window)
链接动作(ir.actions.act_url)
服务器动作 (ir.actions.server)
报表动作(ir.actions.report.xml)
服务端动作(ir.actions.client)
场景来了如果我们想写了个服务器动作用来把订单批量确认的。那么我们怎么可以把这个服务器动作放到订单界面呢,就是通过这个动作绑定了,只要我们定义好了服务器动作然后在添加一条
ir.values记录就可以了。
相关文章推荐
- odoo中运用ir.actions.client实现自定义HTML页面开发
- Odoo ir actions 分析
- Odoo ir value 分析
- odoo开发笔记 --- ir.actions.client打开自定义页面
- 12.2 Default values?Static variables.
- SAP标准OK Code Values 列表
- getParameterValues用法
- Backdoor.Wrom.IRCBot.*(MSN蠕虫)
- SAP ABAP OK Code Values
- Radio Button Values Using Jquery
- WebClient.UploadValues Method
- Question[SQL]:Can you use a SQL statement to finding duplicate values!
- Inserting TTime values in Symbian DB using SQL..
- update records in one table based on values in another table
- Python的字典的items(), keys(), values()
- 信息检索(IR)
- Response.ContentType possible values
- Specified argument was out of the range of valid values.
- [Android] 如何在res/values中添加新的资源文件
- 利用ContentValues.put()方法,通过程序添加通讯录里的联系人资料