我想问一下,当产品已经创建时,是否有任何方法可以“禁用”onchange 装饰器。
我有一个字段 (X),其值取决于 3 个其他字段 (Y) 中的内容。我用过“api.onchange”。创建产品时,我想让 Y 字段之一不再更改 X 的值。
我尝试检查数据库中是否存在“self”,如 exists(),但即使是新记录也被标记为“已存在”。我试图访问 self.id,但这是不可能的。我想过用 bool 类型创建额外的字段,但这是最后的手段。
最佳答案
新 API
第一张图片我在 product.template
的名称中添加了一个 onchange 事件我使用 Debug模式停止程序并查看我是否可以访问 self._origin
显然我可以访问它
第二张图片显示,当我更新产品时,ID 值已传递
现在第三张图片显示,当我创建新产品时,self._origin
中的 id
的值为 False
所以你可以发布使用过的代码吗?我想了解为什么你无法访问 self._origin
旧 API
当使用旧的 api 时,self._origin 无法访问,但您在编辑模式下拥有 ID 列表,该列表不会为空。
def onchange_name(self, cr, uid, ids, name, context=None):
# when updating a record ids will not be empty
# in my case will be ids=[55]
# in create mode the ids is empty
# id = []
if not ids :
# here you are in create mode you put your logic here
关于python - "disable"on_change id odoo 9 创建产品后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795215/