Python 如果我在api.onchange方法中更改一个字段值,它';它在视图中未更新。为什么?

Python 如果我在api.onchange方法中更改一个字段值,它';它在视图中未更新。为什么?,python,python-2.7,onchange,odoo-8,odoo,Python,Python 2.7,Onchange,Odoo 8,Odoo,我有一个函数在api.onchange('bom\u line\u id')中执行,在这个函数中,我希望有一个if语句,在条件匹配时清除bom\u line\u id。我使用了self.bom\u line\u id.product\u id=False 但由于某些原因,该字段被清除(在打印中看到了这一点,但在视图中没有更新) 可能您必须选择要删除产品的bom\u行\u ID上的哪个记录,因为self.bom\u行\u ID是一个one2many 替换 self.bom_line_ids.pro

我有一个函数在
api.onchange('bom\u line\u id')
中执行,在这个函数中,我希望有一个if语句,在条件匹配时清除bom\u line\u id。我使用了
self.bom\u line\u id.product\u id=False

但由于某些原因,该字段被清除(在打印中看到了这一点,但在视图中没有更新)


可能您必须选择要删除产品的bom\u行\u ID上的哪个记录,因为self.bom\u行\u ID是一个one2many

替换

self.bom_line_ids.product_id = False


奥多在谈论这件事时有个问题


您也可以检查其他问题以手动解决该问题:

是,它会发生。当您尝试通过onchange方法为字段设置值时,更改不会显示在视图上。但是,字段值会发生变化。我通过设置“computein the field属性和这里设置的函数与on_change中设置的函数相同”修复了这个问题。因此,该值也会在视图中更新。例如->

job_titles = fields.Char('Job',compute='myemply_name',store=True) 

    @api.onchange('new_empl')
    @api.depends('new_empl')
    def myemply_name(self):
        self.job_titles = value 

嗨,谢谢你的回答!我试过你说的,但是self.bom\u line\u id[self.bom\u line\u id.index(j)].product\u id=False给我的错误是mrp.bom.line没有属性索引。j.product_id=视图中product_id字段的假结果,当打印输出仍然显示为空时,该字段仍然保持我选择的值。当我保存BoM时,product_id的值也存储在数据库中,。。
j.product_id = False 
self.bom_line_ids[self.bom_line_ids.index(j)].product_id = False
job_titles = fields.Char('Job',compute='myemply_name',store=True) 

    @api.onchange('new_empl')
    @api.depends('new_empl')
    def myemply_name(self):
        self.job_titles = value