4 答案
Found Solution!
use attribute force_save="1" in view to save value of readonly field.
<field name="payment_type" readonly="1" force_save="1"/>
it will save value of payment_type field when onchange trigger.
I did it the following way, correct me if I am wrong, I forced saved the value. It works just fine.
"<xpath expr="//field[@name='amount_total']" position="attributes">
<attribute name="force_save">True</attribute>
</xpath>"
Hi all,
The best solution is to add the attribute force_save="1" for the field in XML file.
We no need to install any third party module.
Hope it helps!
Hello
I hope below code will help you
In my case have Total year field is readonly and based on 'Date of birth' Total year will be update
Using onchange method, Can get Total year on field but when save that record Total Year field to set blank
Solution:-
Create new dummy field of total year and set that dummy field value on original field
Example:-
Python file
total_year = fields.Float()
total_year_copy = fields.Float()
from datetime import date
# Onchange method
@api.onchange('dob')
def onchange_dob(self):
today = date.today()
self.total_year = self.total_year_copy = today.year - dob.year - ((today.month, today.day) < (dob.month, dob.day))
# Create method
@api.model
def create(self, vals):
if 'total_year_copy' in vals:
vals.update({'total_year': vals.get('total_year_copy')})
return super(Project, self).create(vals)
# Write method
@api.multi
def write(self, vals):
if 'total_year_copy' in vals:
vals.update({'total_year': vals.get('total_year_copy')})
return super(Project, self).write(vals)
Xml File
<field name="total_year" readonly="1"/>
<field name="total_year_copy" invisible="1"/>
Hope this help you to save readonly records
Best Regards,
Ankit H Gandhi
Hope this will helps: https://learnopenerp.blogspot.com/2021/10/onchange-method-readonly-field-not-store-database-odoo.html