Как мне получить контроль над полями существующего модуля Odoo через javascript из нового модуля. Я не хочу изменять существующий модуль

#javascript #odoo

#javascript #odoo

Вопрос:

У меня есть всплывающее окно в существующем модуле. В этом всплывающем окне есть поля. Это не виджеты, которые я могу переопределить.

 <field name="lot_name" groups="stock.group_production_lot" attrs="{'invisible': ['|',('lot_id', '!=', False),('lot_name', '=', False)]}"/>
 

Я унаследовал этот существующий модуль в новом модуле

 from odoo import models, fields, api
import logging

_logger = logging.getLogger(__name__)

class SerialGenerator(models.Model):
    _inherit = 'stock.move.line'

@api.onchange('lot_name')
    _logger.debug("###################### LOT NAME ######################")
    pass
 

onchange Корректно срабатывает на стороне python.

Проблема в том, что мне нужно иметь контроль javascript над этим полем, но поскольку это существующее поле существующего модуля, которое я не хочу изменять, мне нужно иметь возможность доступа к полю через javascript в моем новом модуле, находящемся в

 mymodulestaticsrcjsmymodule.js
 

Возможно ли то, что я пытаюсь сделать, или есть простой способ, которого мне не хватает?

Комментарии:

1. Вы можете наследовать Javascript для представления формы или древовидного представления.

2. Спасибо @qvpham, я сделал именно это, и это сработало.

Ответ №1:

Я получил эту работу, унаследовав javascript от ListRenderer

 odoo.define('mymodule.module', function (require, instance) {

var ListRenderer = require('web.ListRenderer');
ListRenderer.include({
    events: _.extend({}, ListRenderer.prototype.events, {
        'click .classofinterest': '_newMethod',
    }),
    _newMethod: function () {
        // do stuff in javascript
    }
});

});