Contributors mailing list archives
contributors@odoo-community.org
Browse archives
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
by
Ecosoft Co. Ltd., Kitti Upariphutthiphong
Hello Pedro,
Thank you! It resolved partly, but still having to have this api.onchange on every model though.
Note: I have heard a word from Rafael Odoo that, Odoo are on the way of removing api.onchange, and make api.depends more abstract in the future. May be I have to wait till then...
Kitti
On Fri, Oct 4, 2019 at 10:31 AM Pedro M. Baeza (Tecnativa) <pedro.baeza@tecnativa.com> wrote:
Hi, Kitti, what you can do is:class BaseModel(models.AbstractModel):_name = 'base.model'def _onchange_field_base(self, field_name):... # do whatever with field_nameclass SpecificModel(models.Model):_inherit = 'base.model'_name = 'specific.model'@api.onchange('specific_field')def _onchange_specific_field(self):return self._onchange_field_base('specific_field')Regards.El vie., 27 sept. 2019 a las 13:31, Kitti Upariphutthiphong (<kittiu@ecosoft.co.th>) escribió:Dear all,I have one technical challenge while doing this PR -> https://github.com/OCA/account-analytic/pull/251In the origin module, there was abstract class,
class AnalyticDimensionLine(models.AbstractModel):
_name = 'analytic.dimension.line'Which are inherited by other model, i.e., account.move.line, account.invoice.line, etc.class AccountInvoiceLine(models.Model):
_name = 'account.invoice.line'
_inherit = ['analytic.dimension.line', 'account.invoice.line']
_analytic_tag_field_name = 'analytic_tag_ids'Now, I wanted to add api.onchange method on a field which can be varied by each inheriting model via _analytic_tag_field_nameQuestion is, I would want to do the onchange on the base abstract class, analytic.dimension.line like this, but it doesn't work.class AnalyticDimensionLine(models.AbstractModel):
_inherit = 'analytic.dimension.line'@api.onchange(lambda self: self._analytic_tag_field_name) ---------------------> THIS NOT WORK
def _onchange_analytic_tag_ids(self):And so, I end up having to add @api.onchange in inheriting models. Which I think not very good.class AccountInvoiceLine(models.Model):
_inherit = 'account.invoice.line'
@api.onchange('analytic_tag_ids') ----------------------> NOT GOOD
def _onchange_analytic_tag_ids(self):Any thought are appreciated,Than you,_______________________________________________
Mailing-List: https://odoo-community.org/groups/contributors-15
Post to: mailto:contributors@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe
_______________________________________________
Mailing-List: https://odoo-community.org/groups/contributors-15
Post to: mailto:contributors@odoo-community.org
Unsubscribe: https://odoo-community.org/groups?unsubscribe
Reference
-
How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
byEcosoft Co. Ltd., Kitti Upariphutthiphong-
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
byEcosoft Co. Ltd., Kitti Upariphutthiphong -
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
byCamptocamp SA, Simone Orsi -
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
byEcosoft Co. Ltd., Kitti Upariphutthiphong -
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
byTecnativa. S. L., Pedro M. Baeza
-