#odoo
#odoo
Вопрос:
Я расширил product.template следующими полями:
length = fields.Integer("Length", default=0)
length_float = fields.Float("Float", default=0.0)
Кроме того, я расширил модель product.packaging с помощью этих полей и метода onchange:
product_id_ref = fields.Many2one('product.product', string="Product Reference")
length = fields.Integer('Length')
length_float = fields.Float('Length_Float')
@api.onchange("product_id_ref")
def _onchange_product(self):
if self.product_id_ref:
self.length_float = self.product_id_ref.length_float
self.length = self.product_id_ref.length
Интересно, что поле FLOAT length_float изменено, как ожидалось, и показано в представлении. Целочисленное поле не изменено.
Что-то более удивительное заключается в том, что если я изменю порядок метода onchange
@api.onchange("product_id_ref")
def _onchange_product(self):
if self.product_id_ref:
self.length = self.product_id_ref.length
self.length_float = self.product_id_ref.length_float
Значение не изменяется!
Как это может быть?? У кого-нибудь есть идея?
Спасибо!
Комментарии:
1. У вас есть одно событие onchange, это может быть другое событие onchange, которое отменяет изменение
2. не могли бы вы убедиться, что оно
product_id_ref
содержит значение для обоихlength
,length_float
Ответ №1:
Оказалось, что проблема заключалась в самом поле «длина». Это имя приводит к проблемам на стороне javascript. Переименование приводит к желаемому результату.