odoo总结---类继承和视图继承
类继承
自从有了类,就有继承,继承是类最大的特性,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>
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),
'&',('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),-->
<!-- '&',('centralized','=',True),('card_state','!=','draft')]}"/>-->
<!-- </xpath>-->
</field>
</record>
</data>
odoo总结---类继承和视图继承的更多相关文章
- Odoo中的模型继承、视图继承、Qweb模板继承详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826114.html 在实际开发过程中,经常会遇到需要修改Odoo原生逻辑的情况.然而,直接修改Odoo底 ...
- odoo 中X2many类型的视图继承
我们知道视图的继承可以使用inherit_id,但是对于诸如one2many类型的字段,如何利用xpath继承修改其视图呢? 问题:如果直接写one2many类型的字段,会报不存在该字段的错误: 原视 ...
- odoo开发笔记 -- 搜索视图继承扩展
odoo开发笔记 -- 搜索视图继承扩展
- odoo视图继承
odoo视图继承 简介继承 在odoo里可以通过继承的方式来改写已经存在的view 对比view的定义视图定义中写法多了inherit_id inherit_id指向要改写的view <fiel ...
- 【odoo】【知识点】视图的继承逻辑
背景:同一个模块,两组开发人员对同一个模型的form视图进行了二开.在没有指定外部ID的情况下,odoo是如何选择展示展示哪个视图呢? 上干货 odoo在加载视图的时候,首先调用的models.py中 ...
- CI框架视图继承
CI(CodeIgniter)框架 视图继承 这个代码不是我撸的 ... 当时在哪儿找的忘了 ... 如果有侵权什么的 ... 联系我删了 ... 需要去core里面创建一个MY_loader.php ...
- ECMAScript6 中 类的封装与继承
ECMASCRIPT6中实现了class关键字,这样使我们更容易也更形象的进行类的操作 <script type="text/javascript"> class OF ...
- Lua面向对象----类、继承、多继承、单例的实现
(本文转载)学习之用,侵权立删! 原文地址 http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&a ...
- iOS 杂笔-24(常用类到NSObject的继承列表)
iOS 杂笔-24(常用类到NSObject的继承列表) NSString NSObject->NSString NSArray NSObject->NSArray ↑OC基本类都直接继承 ...
- JavaScript 类式继承与原型继承
交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...
随机推荐
- GPSSworld仿真(一):程序题——单窗口排队系统
3.3 一个仓库共存放了2000吨货物,货物以三种规模出库,少量(10吨),中等(20吨),大量(50吨),分别以10±5分,15分,30±10分的速率出库.如果没有货位达到的情况下,一个仓库能维持供 ...
- 小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我
开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代 ...
- C++/Qt网络通讯模块设计与实现(五)
在C++/Qt网络通讯模块设计与实现(四)中具体分析了Qt的信号槽.线程相关的知识,即从 Qt::ConnectionType,示例源码,结果论证,归纳总结等四个方面进行了全方面讲解,深刻阐述了代码设 ...
- 汽车制造工艺 2.5D 可视化组态监控 | 图扑软件
前言 随着世界经济的不断发展,汽车作为一个如今随处可见的物体,从大体上概括是由四大部分组成:发动机.底盘.车身.电气系统.看似简单的几个名词组件,其内部却是由无数的细小零件构成,一辆汽车更是由上万个微 ...
- github打不开或者打开慢方法
github最近打不开,很久之前遇到过,但是忘记怎么解决了,查找相关资料后,今天记录在此,以备不时之需. 记住3个关键网址 github网址查询:The world's leading softwar ...
- elasticsearch 官方优化建议
1.一般建议 a.不要返回过大的结果集.这个建议对一般数据库都是适用的,如果要获取大量结果,可以使用search_after api,或者scroll (新版本中已经不推荐). b.避免大的文 ...
- Seal AppManager发布:基于平台工程理念的全新应用部署管理体验
4月12日,数澈软件Seal(以下简称"Seal")宣布推出新一代应用统一部署管理平台 Seal AppManager,采用平台工程的理念,降低基础设施操作的复杂度为研发和运维团队 ...
- 随手记:lnmp 安装完 redis 后无法全局操作
说明redis-server不是全局命令,那么假如到全局即可 假设redis安装目录是:/usr/local/redis/bin/redis-cli ln -s /usr/local/redis/b ...
- bash shell 无法使用 perl 正则
哈喽大家好,我是咸鱼.今天跟大家分享一个关于正则表达式的案例,希望能够对你有所帮助 案例现象 前几天有一个小伙伴在群里求助,说他这个 shell 脚本有问题,让大家帮忙看看 可以看到,这个脚本首先 ...
- C#中使用CAS实现无锁算法
CAS 的基本概念 CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问. 它操作通常包含三个参数:一个内存地址(通常是一个共享变量的地址) ...