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 :
http://stackoverflow.com/questions/20954412/create-and-edit-items-of-a-one2many-field-through-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 :
http://stackoverflow.com/questions/20954412/create-and-edit-items-of-a-one2many-field-through-on-change-method
Hi, Thanks for the great post Shiv. What is the meaning of two zeros in
ReplyDelete`leave_ids.append([0,0, {'holiday_status_id':record,'max_leaves...` ?
Hi Aman, You can check full explanation about it here: https://doc.odoo.com/v6.0/developer/2_5_Objects_Fields_Methods/methods.html#osv.osv.osv.write
Deletecan i used that feature on odoo 8
ReplyDeletecan i use that feature on odoo 8.0
ReplyDeleteYes..ofcourse!!
Deletethank a lot that feature help me :) :)
DeleteThank you, your code help me
ReplyDeletegreat!! :)
ReplyDeleteThanks 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.
ReplyDeletehi..how to update only one cell in one2many field?
ReplyDeleteI 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
ReplyDelete@api.multi
@api.onchange('contract_bool')
def onchange_populate(self):
if self.contract_bool==True:
product_obj=self.env['product.template']
product_filter_search=product_obj.search([('compulsory_product','=',True)])
for abc in product_filter_search:
create_contract_entries=self.clients_boq_id.create(
{'stud_ids': [(0, 0, {'name':abc.id,'link_client_boq_oppor':product_obj.id})]})
print create_contract_entries['name'].name
print create_contract_entries['link_client_boq_oppor']
print statements won't work in onchange...you have to assign values to self object or use return statement
DeleteYou can check default addons for reference
thank you..
ReplyDelete