从其他模型更改字段值
change fields value from other model
在 pos.quotation 模型中我们有状态。所以我的目标是当状态发生变化时,我希望 shoes.order 中名为 "handed" 的布尔字段将变为 true。如果我要在一个模型中进行操作,我知道该怎么做,但是当我需要在其他模型中更改字段时会遇到困难。
class pos_quotation(models.Model):
_inherit = "pos.quotation"
@api.onchange('state')
def handed(self):
shoes = self.env['shoes.order']
for rec in self:
if self.state == "delivery_success":
rec.shoes.handed = True
在 onchange 中,当您更改值时,self 包含一个虚拟对象
数据库层没有任何反应。 (与依赖计算字段相反)
但在self._origin中传递了原始值。
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
# first try this if it work
self._origin.shoes.handed = True
# if not working then you need to fetch the recorod
# from the database first.
shoes = self.env['shoes.order'].search[('id', '=', self.shoes.id)]
shoes.handed = True
但是在 onchange 事件中这样做可能会导致用户的一些成像问题
他改变了主意并单击取消(放弃更改)但是 shoes.handed 是
已经准备好提交到数据库中。
我的建议是使用相关领域。
class pos_quotation(models.Model):
_inherit = "pos.quotation"
# i'm assuming that your m2o field is shoes
# don't make readonly because you need to save it's changed value
# when you hit save.
handed = fields.Boolean(related="shoes.handed")
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
self.handed = True
不要忘记将此字段添加到表单视图并确保它是不可见的
所以用户不要手动更新值
<field name="handed" invisible="1"/>
希望你明白了。
在 pos.quotation 模型中我们有状态。所以我的目标是当状态发生变化时,我希望 shoes.order 中名为 "handed" 的布尔字段将变为 true。如果我要在一个模型中进行操作,我知道该怎么做,但是当我需要在其他模型中更改字段时会遇到困难。
class pos_quotation(models.Model):
_inherit = "pos.quotation"
@api.onchange('state')
def handed(self):
shoes = self.env['shoes.order']
for rec in self:
if self.state == "delivery_success":
rec.shoes.handed = True
在 onchange 中,当您更改值时,self 包含一个虚拟对象 数据库层没有任何反应。 (与依赖计算字段相反)
但在self._origin中传递了原始值。
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
# first try this if it work
self._origin.shoes.handed = True
# if not working then you need to fetch the recorod
# from the database first.
shoes = self.env['shoes.order'].search[('id', '=', self.shoes.id)]
shoes.handed = True
但是在 onchange 事件中这样做可能会导致用户的一些成像问题 他改变了主意并单击取消(放弃更改)但是 shoes.handed 是 已经准备好提交到数据库中。
我的建议是使用相关领域。
class pos_quotation(models.Model):
_inherit = "pos.quotation"
# i'm assuming that your m2o field is shoes
# don't make readonly because you need to save it's changed value
# when you hit save.
handed = fields.Boolean(related="shoes.handed")
@api.onchange('state')
def handed(self):
if self.state == "delivery_success":
self.handed = True
不要忘记将此字段添加到表单视图并确保它是不可见的 所以用户不要手动更新值
<field name="handed" invisible="1"/>
希望你明白了。