Odoo: переопределение целочисленного поля в onchange не работает, тогда как Float изменен — ПОЧЕМУ?

#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. Переименование приводит к желаемому результату.