如果我在 api.onchange 方法中更改字段值,它不会在视图中更新。为什么?
If I change a field value in an api.onchange method, it's not updated in the view. Why?
我有一个函数在 api.onchange('bom_line_ids')
中执行,在这个函数中我想要一个 if 语句来清除 bom_line_ids 如果条件匹配。我用了 self.bom_line_ids.product_id = False
但由于某种原因,该字段已被清除(在打印件中看到了这一点,但未在视图中更新)。
@api.onchange('bom_line_ids')
def get_excl_list(self):
list1 = []
for i in self.excl_list:
list1.append(i.id)
list2 = []
for j in self.bom_line_ids:
list2.append(j.product_id.id)
if j.product_id.id in list1:
warning_message = "Product: " + self.env['product.template'].search([('id','=',j.product_id.id)]).name + " can't be added to the BoM.\n Please select another product."
print "self.bom_line_ids.product_id", self.bom_line_ids.product_id
self.bom_line_ids.product_id = False
print "self.bom_line_ids.product_id", self.bom_line_ids.product_id
return { 'warning': {'title': 'Product error', 'message':warning_message} }
也许您必须 select 要删除产品的 bom_line_ids 上的哪条记录,因为 self.bom_line_ids 是一对多的。
替换
self.bom_line_ids.product_id = False
来自
j.product_id = False
或
self.bom_line_ids[self.bom_line_ids.index(j)].product_id = False
Odoo 中有一个关于此的问题。 Someone already made a pull request.
您也可以检查其他问题以手动解决问题:
是的,它发生了。当您尝试通过 onchange 方法为字段设置值时,更改不会出现在视图中。但是字段值确实发生了变化。我通过设置 'compute in the field property and the function set here is the same as in the 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
我有一个函数在 api.onchange('bom_line_ids')
中执行,在这个函数中我想要一个 if 语句来清除 bom_line_ids 如果条件匹配。我用了 self.bom_line_ids.product_id = False
但由于某种原因,该字段已被清除(在打印件中看到了这一点,但未在视图中更新)。
@api.onchange('bom_line_ids')
def get_excl_list(self):
list1 = []
for i in self.excl_list:
list1.append(i.id)
list2 = []
for j in self.bom_line_ids:
list2.append(j.product_id.id)
if j.product_id.id in list1:
warning_message = "Product: " + self.env['product.template'].search([('id','=',j.product_id.id)]).name + " can't be added to the BoM.\n Please select another product."
print "self.bom_line_ids.product_id", self.bom_line_ids.product_id
self.bom_line_ids.product_id = False
print "self.bom_line_ids.product_id", self.bom_line_ids.product_id
return { 'warning': {'title': 'Product error', 'message':warning_message} }
也许您必须 select 要删除产品的 bom_line_ids 上的哪条记录,因为 self.bom_line_ids 是一对多的。
替换
self.bom_line_ids.product_id = False
来自
j.product_id = False
或
self.bom_line_ids[self.bom_line_ids.index(j)].product_id = False
Odoo 中有一个关于此的问题。 Someone already made a pull request.
您也可以检查其他问题以手动解决问题:
是的,它发生了。当您尝试通过 onchange 方法为字段设置值时,更改不会出现在视图中。但是字段值确实发生了变化。我通过设置 'compute in the field property and the function set here is the same as in the 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