赞
踩
Odoo提供了两种模型继承机制
第一种继承允许在其他包(module)中继承修改当前包(module)的相关内容(inherit):
1. 在已存在的model中继承新增字段
2. 重写已存在model的字段定义
3. 增加model约束
4. 增加model方法
5. 重写model中已存在的方法
第二种继承允许连接到每一个继承的父级model,并且提供直接访问父级model
字段属性的方式。(inherits)
继承写法分为三种
1. 有_inherit无_name:
对当前model属性进行扩展.
2. 有_inherit有_name:
创建出一个新的model拥有父级的所有字段,会在当前model表中初始化继
承的字段列.
3. _inherits:
隐含式继承,能够直接使用父级的所有字段,调用时就和使用自己model的
字段一样,但不需要出现在当前的表记录列中.
简介
替换已有视图的内容,Odoo提供了多子视图继承一个父视图,并且对父视图中的
元素进行增加删除或修改。
视图的继承需要在XML视图定义的时候使用inherit_id字段,在继承的子视图中,
arch标签块内能够定义任意数量的xpath标签元素,用来修改当前的父视图内容。
<!--在父级视图description字段后添加一个idea_ids字段-->
<!-- improved idea categories list -->
<record id="idea_category_list2" model="ir.ui.view">
<field name="name">id.category.list2</field>
<field name="model">idea.category</field>
<field name="inherit_id" ref="id_category_list"/>
<field name="arch" type="xml">
<!-- find field description and add the field
idea_ids after it -->
<xpath expr="//field[@name='description']" position="after">
<field name="idea_ids" string="Number of ideas"/>
</xpath>
</field>
</record>
expr: 是选择父级视图的单个元素标签路径,如果找不到会抛错
position: 操作属性
1. inside: 在当前expr标签内容末尾添加块级元素
2. replace: 替换当前expr定位的标签元素
3. before: 在当前expr定位的标签元素前添加同级元素
4. after: 在当前expr定位的标签元素后添加同级元素
5. attributes: 修改当前expr定位的标签元素属性
<record id="idea_category_list2" model="ir.ui.view"> <field name="name">id.category.list2</field> <field name="model">idea.category</field> <field name="inherit_id" ref="id_category_list"/> <field name="arch" type="xml"> <!--inside--> <xpath expr="//page[@name='sales_purchases']/group" position="inside"> <group> <field name="gruop_field01"/> <field name="gruop_field02"/> </group> </xpath> <!--before--> <xpath expr="//field[@name='description1']" position="before"> <field name="before_field"/> </xpath> <!--after--> <xpath expr="//field[@name='description2']" position="after"> <field name="after_field"/> </xpath> <!--replace--> <xpath expr="//field[@name='description3']" position="replace"> <!--什么都不写 就是把这个字段从视图上删除--> </xpath> <!--attributes--> <xpath expr="//field[@name='description4']" position="attributes"> <attribute name="string">Serial</attribute> </xpath> </field> </record>
Domain
域(Domain)是对数据筛选的条件,它是一个元组列表,每一个元组中含有三个元素
(field_name,operator,value)
field_name:当前模型的字段名字符串
operator:符号有 >,<,=,>=,<=,!=,like,ilike,=like,=ilike,not like,
not ilike,=?,in,not in,child_of,parent_of
value:判断结果值
[('field01','=','001')]
Domain 元组单元间的关系可以通过前缀表达式组合 '|'(或),'&'(并),'!'(非)
# field01不等于001
# 并且 ((field03为003 且 field04为004) 或 (field02 为 002))
# 的domain条件格式如下:
['!',('field01','=','001'),
'|',('field02','=','002'),
'&',('field03','=','003'),('field04','=','004')]
1. 业务逻辑数据筛选
2. 字段取值范围控制
3. 界面数据显示范围控制
4. 权限规则范围控制
5. 记录规则控制
6. API方法中使用 例如 search、search_read、onchange等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。