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.

  5. to update only one cell in one2many field?

  6. I tried working on something like this but showing at the backend but not display on the front end, This is my code, kindly check for me please

    def onchange_populate(self):
    if self.contract_bool==True:
    for abc in product_filter_search:
    {'stud_ids': [(0, 0, {'name','link_client_boq_oppor'})]})
    print create_contract_entries['name'].name
    print create_contract_entries['link_client_boq_oppor']

    1. print statements won't work in have to assign values to self object or use return statement
      You can check default addons for reference


Thanks for your valuable comments.