.. _tuto-browse-methods: Call methods from a Model or from records ***************************************** Unlike the `Odoo` API, there is a difference between class methods (e.g.: `create`, `search`, ...) and instance methods that apply directly on existing records (`write`, `read`, ...):: >>> User = odoo.env['res.users'] >>> User.write([6], {'name': "Dupont D."}) # Using the class method True >>> user = User.browse(6) >>> user.write({'name': "Dupont D."}) # Using the instance method >>> user.mapped('company_id.partner_id.child_ids.name') # Another use of instance method ['Chester Reed', 'Dwayne Newman'] When a method is called directly on records, their `ids` (here `user.ids`) is simply passed as the first parameter. This also means that you are not able to call class methods such as `create` or `search` from a set of records:: >>> User = odoo.env['res.users'] >>> User.create({...}) # Works >>> user = User.browse(1) >>> user.ids [1] >>> user.create({...}) # Error, `create()` does not accept `ids` in first parameter >>> user.__class__.create({...}) # Works This is a behaviour `by design`: `OdooRPC` has no way to make the difference between a `class` or an `instance` method through RPC, this is why it differs from the `Odoo` API. :ref:`Next step: Update data through records `