类继承

自从有了类,就有继承,继承是类最大的特性,ODOO开发有不例外,先ODOO集采总结如下:

1)类继承:扩展类中没有_name属性,因为它继承了父类的_name。对现有模型的扩展, 添加新功能,都将添加到现有模型中,不会创建新模型。 因此,在odoo中,根据_name唯一确定这个模型时找到的就是扩展后的类。

举例:

class SaleOrderLine(models.Model):
_inherit = 'sale.order.line'
_sort = 'name'
_rec_name = 'order_id'

2)原型继承:我们想使用具有不同于父模型的值的_name属性,我们将获得一个新模型重用来自继承的特性,但是具有自己的数据库表和数据。其实就是把继承的类的功能特性拷贝衣服给新的模型使用,并不改变被继承模型。

复制意味着被继承的方法和字段也将在继承模型中可用。 对于字段,这意味着它们也将被创建并存储在目标模型的数据库表中。 原始(继承)和新(继承)模型的数据记录保持不相关。 只有定义是共享的。

举例说明:

class SaleOrderLine(models.Model):
_name = 'sale.order.line'
_inherit = 'sale.order.line'

3)代理继承(委托继承):使用_inherits属性,它允许一个模型以透明的方式包含其他模型。通过字典映射继承模型与字段的关系,并关联它们。(相当于成员变量:引用一个外部的类对象赋值给这个模型的一个成员,但是对象的值是保存在被引用的类的数据库表中的。但是在当前类通过成员修改了变量值的,则会同步到被引用的类的数据库表中)

优点是不需要在几个表之间重复数据结构,例如地址。 任何需要包含地址的新模型都可以将其委派给嵌入式合作伙伴模型。 如果在合作伙伴地址字段中引入了修改,则这些修改会立即提供给嵌入它的所有模型!

视图继承

格式:<field name="inherit_id" ref="hr.view_employee_form"/>

通过 name='inherit_id' ref=' hr.view_employee_form' 继承外部id是hr.view_employee_form 完成集采;

1 定位新的字段插入的位置使用xpath进行定位,定位形式,很多

<xpath expr="//field[@name="已有字段 "]" position="具体位置" before ,after,attributes,"inside"

1.1 before 在expr 匹配的元素前加同级内容
 <xpath> 
    <xpath expr="//field[@name='work_location']" position="before">
                 <field name="city_id"/>
             </xpath>

1.2 after 在expr匹配元素后加同级内容

  <xpath expr="//field[@name='work_location']" position="after">
                 <field name="work_nature"/>
                 <xpath>

1.3 attributes :使用attribute 标签对expr 匹配的元素属性进行修改

     name = fields.Char(string="Name", copy=False)  # 流水号
_sql_constraints = [('dec_name_uniq', 'unique(name)', 'error message dec name uniq')]
<xpath expr="//field[@name='work_location']" position='attributes'>
< attribute name="invisible">1</attribute>
</xpath>
 #补充内容举例 可以在通过attributes 字段的属性,比如修改string,options,doamin, domian必须第一个条件西夏数值类型,
 
<xpath expr="//field[@name='department_id']" position="attributes">
<attribute name="string">设置主部门</attribute>
<attribute name="options">{'no_open':True,'no_create':True}</attribute>
<attribute name="domain">{'id','in',department_ids}</attribute>
  1. 3 attibutes:对于字段继承

     
<record id="payment_sale_order_partial_reconcile_view_extend" model="ir.ui.view">
<field name="name">payment.sale.order.partial.inherit.reconcile_list</field>
<field name="model">payment.sale.order.partial.reconcile</field>
<field name="inherit_id" ref="kg_account.payment_sale_order_partial_reconcile_view_list"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='centralized']" position="before">
<field name="card_state"/>
</xpath>
<xpath expr="//button[@name='%(kg_account.payment_disclaim_action)d']" position="attributes">
<attribute name="invisible"></attribute>
<attribute name="attrs">{'invisible':['|','|',('amount_effective', '=', 0),('is_self', '!=', True),
'&amp;',('centralized','=',True),('card_state','!=','draft')]}</attribute>
</xpath>
<!-- <xpath expr="//button[@name='%(kg_account.payment_disclaim_action)d']" position="replace">-->
<!-- <button name="%(kg_account.payment_disclaim_action)d" string="反认领" type="action"-->
<!-- context="{'default_order_line_id': order_line_id, 'return_back': True}"-->
<!-- attrs="{'invisible':['|','|',('amount_effective', '=', 0),('is_self', '!=', True),-->
<!-- '&amp;',('centralized','=',True),('card_state','!=','draft')]}"/>-->
<!-- </xpath>-->
</field>
</record>
</data>

odoo总结---类继承和视图继承的更多相关文章

  1. Odoo中的模型继承、视图继承、Qweb模板继承详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826114.html 在实际开发过程中,经常会遇到需要修改Odoo原生逻辑的情况.然而,直接修改Odoo底 ...

  2. odoo 中X2many类型的视图继承

    我们知道视图的继承可以使用inherit_id,但是对于诸如one2many类型的字段,如何利用xpath继承修改其视图呢? 问题:如果直接写one2many类型的字段,会报不存在该字段的错误: 原视 ...

  3. odoo开发笔记 -- 搜索视图继承扩展

    odoo开发笔记 -- 搜索视图继承扩展

  4. odoo视图继承

    odoo视图继承 简介继承 在odoo里可以通过继承的方式来改写已经存在的view 对比view的定义视图定义中写法多了inherit_id inherit_id指向要改写的view <fiel ...

  5. 【odoo】【知识点】视图的继承逻辑

    背景:同一个模块,两组开发人员对同一个模型的form视图进行了二开.在没有指定外部ID的情况下,odoo是如何选择展示展示哪个视图呢? 上干货 odoo在加载视图的时候,首先调用的models.py中 ...

  6. CI框架视图继承

    CI(CodeIgniter)框架 视图继承 这个代码不是我撸的 ... 当时在哪儿找的忘了 ... 如果有侵权什么的 ... 联系我删了 ... 需要去core里面创建一个MY_loader.php ...

  7. ECMAScript6 中 类的封装与继承

    ECMASCRIPT6中实现了class关键字,这样使我们更容易也更形象的进行类的操作 <script type="text/javascript"> class OF ...

  8. Lua面向对象----类、继承、多继承、单例的实现

    (本文转载)学习之用,侵权立删! 原文地址   http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...

  9. iOS 杂笔-24(常用类到NSObject的继承列表)

    iOS 杂笔-24(常用类到NSObject的继承列表) NSString NSObject->NSString NSArray NSObject->NSArray ↑OC基本类都直接继承 ...

  10. JavaScript 类式继承与原型继承

    交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...

随机推荐

  1. 【超详细】Ubuntu 20.04 安装 Apache+PHP网页环境 图文教程,常见问题和解决方案

    本文将介绍在Ubuntu20.04 LTS环境下安装Apache的全过程,针对其中可能出现的一些坑也会提供解决方案. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗 ...

  2. 《HelloGitHub》第 84 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  3. Node.js爬取百度图片瀑布流,使用class类封装。

    //爬取百度高清图片 const phantom = require('phantom') const express = require('express'); const app = expres ...

  4. Oracle_用户-授权-角色

    Oracle创建用户及表空间 1. 用户 创建用户: sql> create user <用户名> IDENTIFIED BY <用户密码> default tables ...

  5. jmeter分布式测试安装部署步骤

    一.下载linux版本的jdk ----注:下载的jdk和jmeter要与window的jdk和jmeter一致 下载地址:https://www.oracle.com/java/technologi ...

  6. Java BIO,NIO,AIO

    一丶IO模型&Java IO Unix为程序员提供了以下5种基本的io模型: blocking io: 阻塞io nonblocking io: 非阻塞io I/O multiplexing: ...

  7. 成为钢铁侠!只需一块RTX3090,微软开源贾维斯(J.A.R.V.I.S.)人工智能AI助理系统

    梦想照进现实,微软果然不愧是微软,开源了贾维斯(J.A.R.V.I.S.)人工智能助理系统,贾维斯(jarvis)全称为Just A Rather Very Intelligent System(只是 ...

  8. 修复Joe主题静态资源为国内地址

    背景 Typecho 是由 type 和 echo 两个词合成的,来自于开发团队的头脑风暴. Type,有打字的意思,博客这个东西,正是一个让我们通过打字,在网络上表达自己的平台.Echo,意思是回声 ...

  9. GitLab 安装部署使用

    GitLab介绍 GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业.学校等内部网络搭建git私服. 功能:Gitl ...

  10. python模拟鼠标键盘操作

    前言 1 懒人,工作中可以模拟真人操作,不用自己点击 2游戏人员  这是做模拟外挂的必备知识,不管手机还是电脑游戏,尤其副本 准备模块 代码如下: 实现了一个最简单的输入密码,enter进入的登录过程 ...