宜兴通达竭诚为您服务。

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

Extending Methods
  • 上传者: Administrator
  • 上传时间:2023年11月19日 01时43分59秒
摘要:
* Extending Methods ** *** In some cases, it might be necessary to add some additional operations to an already existing Python method. This is known ......
正文 相关文章 请喝咖啡

    Extending Methods

    In some cases, it might be necessary to add some additional operations to an already existing Python method. This is known as extending methods. When we add new features or customize existing model classes, we will need to modify any existing business logic. As a result, in some cases, we will need to modify the existing methods to adapt to the new features.

    Let's take a look at this use case by extending a custom function. Consider a model that stores all of an educational organization's student records.

    from odoo import fields, models, api

    class Student(models.Model):

       _name = "student.student"

       _description = "Student"

       name = fields.Char(string="Name", required=True)

       partner_id = fields.Many2one('res.partner', string="Partner")

       phone = fields.Char(string="Phone Number")

       email = fields.Char(string="Email", required=True)

       status = fields.Char(string="Status")

    Add a button to the form view of a student record that updates the student's status field value.

    <header>

    <button name="update_status" string="Update Status" class="oe_highlight"

     type="object"/>

    </header>

    Define the update_status() method in the python file.The write method is used in this case to add a value to the student record set.

    def update_status(self):

       self.write({

           'status': "Status Updated"

       })

    Consider whether it is necessary to inherit the current student model in order to add certain functionalities. To accomplish this, we can inherit the student model and add an extra date field date_status_last_updated, which will record the date the status was last updated.

    class StudentInherit(models.Model):

       _inherit = "student.student"

       date_status_last_updated = fields.Date(string="Status Updated Date")

    The field value for date_status_last_updated must be updated by extending the update status() method. For that, define a method with the same name. This will help in extending an existing method. Then, all the operations specified in the parent class can be carried out using the super() method. Super is used to override a method that already exists in the same class. In Odoo, supering create() or write() methods are common. It is important to remember that all arguments to the extending function must also be specified. You must specify any additional parameters from the parent function in the inherited class as well. The extended method is shown below, which will execute all of the parent method's steps first, followed by the additional steps.

    def update_status(self):

       res = super(Student, self).update_status()

       self.write({

           'date_status_last_updated': fields.Date.today()

       })

       return res

    We can add steps to an existing function without affecting its functionality by overriding the existing method.

     

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

服务原则及地区范围

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

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

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

宜兴地区提供上门服务:

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