宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

Inheritance
  • 上传者: Administrator
  • 上传时间:2023年11月14日 03时09分24秒
摘要:
* Inheritance ** *** There are some situations in every module customization that require us to inherit some models in order to meet our business nee ......
正文 相关文章 请喝咖啡

    Inheritance

    There are some situations in every module customization that require us to inherit some models in order to meet our business needs. We can use the _inherit properties to add new features to an existing model. Odoo has two inheritance techniques that allow you to modularly extend an existing model.

     

    Classical Inheritance:

    The classic inheritance where we use both _name and _inherit attributes together. In addition, the new models get all methods and fields from their base.

    class ParentModel(models.Model):

       _name = 'parent.model'

       name = fields.Char()

    Child Model

    class ChildModel(models.Model):

       _name = 'child.model'

       _inherit = 'parent.model'

       date = fields.Date()

    Here, we can access all functionality of the parent model from the child model.

    Prototype Inheritance:

    The prototype inheritance can be used to add a new field or a function to an existing model. We will only need the _inherit attribute for this type of inheritance. The new existing model is used in place of the child model.

    For example: Parent model

    class ParentModel(models.Model):

       _name = 'parent.model'

       name = fields.Char()

    Child Model

    class ChildModel(models.Model):

       _name = 'child.model'

       _inherit = 'parent.model'

       date = fields.Date()

    When we check the database, we can see that the model now includes the newly created fields. Additionally possible is the create and override of methods.

    Delegation Inheritance:

    Delegation inheritance allows us to sink another model to your existing model without changing the views. We use the _inherits attribute for this type of inheritance.

    For example:

    class ProductTemplate(models.Model):

      _name = "product.template"

    class ProductProduct(models.Model):

      _name = "product.product"

      _inherits = {'product.template': 'product_tmpl_id'}

      Product_tmpl_id = fields.Many2one('product.template', 'Product Template', auto_join=True, index=True, ondelete="cascade", required=True)

    View Inheritance:

    View inheritance can be used to replace an existing view. The content of their parent view can be added or removed by these extensions. We can expand the current view by using the inherit id field.

    For example:

    <record id="inherited_model_view_form" model="ir.ui.view">

           <field name="name">inherited.product.form.inherit.test</field>

           <field name="model">product.template</field>

           <field name="inherit_id" ref="product.product_template_form_view"/>

           <field name="arch" type="xml">

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

                   <field name="new_field"/>

               </xpath>

           </field>

       </record>

    expr: expression for the parent view's single element selection Position: An operation that applies the matched elements, examples include operations that apply elements inside, outside, after, or before attributes.

     

     

    本文章从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信扫一扫,一分也是爱:
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: