当前位置:   article > 正文

Odoo | 入门 | (4)-继承模式(基于Odoo12)_odoo position属性

odoo position属性

继承

模型继承


Odoo提供了两种模型继承机制

第一种继承允许在其他包(module)中继承修改当前包(module)的相关内容(inherit):
1. 在已存在的model中继承新增字段
2. 重写已存在model的字段定义
3. 增加model约束
4. 增加model方法
5. 重写model中已存在的方法

第二种继承允许连接到每一个继承的父级model,并且提供直接访问父级model
字段属性的方式。(inherits)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

继承写法分为三种

1. 有_inherit无_name:
    对当前model属性进行扩展.

2. 有_inherit有_name:
    创建出一个新的model拥有父级的所有字段,会在当前model表中初始化继
    承的字段列.

3. _inherits:
    隐含式继承,能够直接使用父级的所有字段,调用时就和使用自己model的
    字段一样,但不需要出现在当前的表记录列中.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

视图继承


简介

替换已有视图的内容,Odoo提供了多子视图继承一个父视图,并且对父视图中的
元素进行增加删除或修改。

视图的继承需要在XML视图定义的时候使用inherit_id字段,在继承的子视图中,
arch标签块内能够定义任意数量的xpath标签元素,用来修改当前的父视图内容。
  • 1
  • 2
  • 3
  • 4
  • 5
<!--在父级视图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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
expr: 是选择父级视图的单个元素标签路径,如果找不到会抛错
position: 操作属性
    1. inside: 在当前expr标签内容末尾添加块级元素
    2. replace: 替换当前expr定位的标签元素
    3. before: 在当前expr定位的标签元素前添加同级元素
    4. after: 在当前expr定位的标签元素后添加同级元素
    5. attributes: 修改当前expr定位的标签元素属性
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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:判断结果值
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[('field01','=','001')]
  • 1
Domain 元组单元间的关系可以通过前缀表达式组合 '|'(或),'&'(并),'!'(非)
  • 1
# field01不等于001 
# 并且 ((field03为003 且 field04为004) 或 (field02 为 002)) 
# 的domain条件格式如下:
['!',('field01','=','001'),
 '|',('field02','=','002'),
 '&',('field03','=','003'),('field04','=','004')]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Domain可以用于:
1. 业务逻辑数据筛选
2. 字段取值范围控制
3. 界面数据显示范围控制
4. 权限规则范围控制
5. 记录规则控制
6. API方法中使用 例如 search、search_read、onchange等
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/230835
推荐阅读
相关标签
  

闽ICP备14008679号