Sunday, 23 November 2014

Odoo/OpenERP : Populate one2many list using on_change method

Following is the method to update/populate simple field value using on_change method:

return {'value' : {'field_name' : <field_value>}}

Most of the OpenERP developers will be aware of it.

What we will do if we have to add one2many list using on_change method? For example : I want to display list of leaves allotted, leaves taken and leaves pending of an employee. So on_change employee_id I want to show related updated leave list. leave_ids is one2many field in my main table.

what we have to do is as follow:

leave_ids = []       
for record in records:
    if record:
        leave_ids.append([0,0, {'holiday_status_id':record,'max_leaves':records[record]['max_leaves'],'leaves_taken':records[record]['leaves_taken'],'remaining_leaves':records[record]['remaining_leaves']}])

return {'value' : {'leave_ids' : leave_ids}}

Hopefully it will help someone.

If you need more detail on this. Please post your valuable comments.

Thanks!!!!!!!!!!!! Enjoy Programming :)

Reference Link :


  1. Hi, Thanks for the great post Shiv. What is the meaning of two zeros in
    `leave_ids.append([0,0, {'holiday_status_id':record,'max_leaves...` ?

    1. Hi Aman, You can check full explanation about it here:

  2. can i used that feature on odoo 8

  3. can i use that feature on odoo 8.0

  4. Thanks Shiv Modi. I tried your code, the one2many field populate only after save the form. i need to display records after on change but before save. is it possible.


Thanks for your valuable comments.

Gmail: Download blocked file

Hi, today we are going to learn, how to download blocked file in gmail. Sometimes you see following message in gmail: and you can...