override write method odoo 8

Greetings everyone, in this blog-post, you will learn how to override write method in Odoo 8.

The write method for a particular model  can be called by clicking the ‘Edit’ & followed by ‘Save’ button in the view of that model.

Here i have overridden the write method of res.users model. You can override the write method of any model in similar way in Odoo 8.

You can overrride the write method for a particular model by,

class res_users(models.Model):
    _inherit ='res.users'

    @api.multi
    def write(self,vals):
        print 'Fields and the values to be updated/written--',vals
        #Write your logic here
        res = super(res_users, self).write(vals)
        #Write your logic here
        return res

 

You need to give the class name in the super method. For eg here:- res_users

Use of Write Method in Odoo:

  • Write method executes an SQL update query on the records.
  • The values of the field  that are going to be wrriten can be found in the vals dictionary, which is the parameter to the method.
  • The values can be extracted form the dictionary and can be checked against a criteria and a Warning can be raised if its fails to do so.
  • The vals dictionary can be modified as per the requirement before calling the super method.
  • The vals will be a blank dictionary if no field is changed.
  • If you need to call write method again inside the write method, you need to call super method twice.

 

Here is a snapshot form eclipse IDE:-

Overriding Write Method in Odoo 8

Hope you got an insight and understanding of the ORM write method in Odoo 8 and the way of overriding it.

Please Comment below if you have any doubts,

Thank you.

By Burhan Vakharia

Having 6+ years of experience working on Odoo with projects covering several business verticles like Retail industry, Manufacturing, Service, Rental, Education, Medical and many more. I am having experience working on Odoo projects from several countries across the globe.

4 thoughts on “Learn: Overriding Write Method in Odoo 8”
    1. @api.multi is for multiple records, where you can loop through it. In Odoo v7 the write method has a parameter called ‘ids’, where a list is passed. In odoo v8, this parameter is decorated with the decorator @api.multi. So now you don’t need to pass ids. You can get the list of ids in v8 by printing ‘self._ids’.

Leave a Reply

Your email address will not be published. Required fields are marked *