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的面向对象的类与继承术语,但其基于原型对象的思想却可 ...
随机推荐
- SpringBoot 启动类的原理
SpringBoot启动类上使用 @SpringBootApplication注解,该注解是一个组合注解,包含多个其它注解.和类定义(SpringApplication.run)要揭开 SpringB ...
- [C++STL教程]1.vector容器是什么?实用教程来啦!超简单易懂,拿来就用
C++与传统的C语言有一个很大的区别,就是新增了标准模板库 STL(Standard Template Library),它是 C++ 标准库的一部分,不需要单独安装,只需要 #include 对应的 ...
- Java/Kotlin 使用Redis模拟发送验证码
原文地址: Java/Kotlin 使用Redis模拟发送邮件验证码 - Stars-One的杂货小窝 Java中常用语连接Redis的库有lettuce和jredis,一般是推荐lettuce,其具 ...
- 【Visual Leak Detector】配置项 ForceIncludeModulesmd
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇介绍 VLD 配置文件中配置项 ForceIncludeModules 的使用方法. 同系列文章目录可见 <内存泄漏检测工具&g ...
- 源码解读之FutureTask如何实现最大等待时间
预备知识:Java 线程挂起的常用方式有以下几种 Thread.sleep(long millis):这个方法可以让线程挂起一段时间,并释放 CPU 时间片,等待一段时间后自动恢复执行.这种方式可以用 ...
- C# System.ObjectDisposedException: Cannot access a disposed object, A common cause of thiserror is disposing a context that was resolved from dependency injection and then later trying touse...
项目中使用了依赖注入,这个错误在我项目中的原因:在async修饰的异步方法中,调用执行数据库操作的方法时,没有使用await关键字调用,因为没有等待该调用,所以在调用完成之前将继续执行该方法.因此,已 ...
- docker安装python+nginx
一个容器安装python和nginx dockerfile FROM centos:7.9.2009 USER root RUN yum install gcc openssl-devel bzip2 ...
- 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金🏆!这份《OpenTiny 开源贡献指南》请收好🎁!
大家好,我是 Kagol. 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作. 这里给大家简单介绍下开源之夏. 开源之夏是由中科院软件所& ...
- Django笔记二十八之数据库查询优化汇总
本文首发于公众号:Hunter后端 原文链接:Django笔记二十八之数据库查询优化汇总 这一篇笔记将从以下几个方面来介绍 Django 在查询过程中的一些优化操作,有一些是介绍如何获取 Django ...
- 【Visual Leak Detector】源码文件概览
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇对 VLD 源码包中的各文件用途做个概述.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. 整体概览 2. ...