Contributors mailing list archives
contributors@odoo-community.org
Browse archives
Linting for 13.0 branches (using black and pre-commit)
Re: Souheil Bejaoui for project & service PSC
Re: How to use @api.onchange in models.AbstractModel, when the interiting class field name are different.
by
Camptocamp SA, Simone Orsi
Hi Kitti,
AFAIS your solution with the lambda probably does not work because you are returning the field name instead of a tuple/list of fields.
If you want to do it that way I suggest you use a specific method in the base model, eg:
class AccountInvoiceLine(models.Model):
_name = 'account.invoice.line'
_inherit = ['analytic.dimension.line', 'account.invoice.line']
_analytic_tag_field_name = 'analytic_tag_ids'
_name = 'account.invoice.line'
_inherit = ['analytic.dimension.line', 'account.invoice.line']
_analytic_tag_field_name = 'analytic_tag_ids'
def _get_onchange_analytic_tag_spec(self):
return (self._analytic_tag_field_name, )
@api.onchange(self._get_onchange_analytic_tag_spec)
def _onchange_analytic_tag_ids(self):
def _onchange_analytic_tag_ids(self):
[...]
Hope this helps. Bests,
S.
On Fri, Sep 27, 2019 at 1:31 PM Kitti Upariphutthiphong <kittiu@ecosoft.co.th> wrote:
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
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
-