Python &引用;禁用";在创建产品后更改id odoo 9

Python &引用;禁用";在创建产品后更改id odoo 9,python,postgresql,openerp,odoo-9,Python,Postgresql,Openerp,Odoo 9,我想问一下,当产品已经创建时,是否有任何方法可以“禁用”onchange decorator 我有一个字段(X),它的值取决于其他3个字段(Y)中的内容。我使用了“api.onchange”。当产品被创建时,我想使其中一个Y字段不再改变X的值 我试图检查数据库中是否存在“self”,如exists(),但即使是新记录也标记为“existing”。我试图访问self.id,但这是不可能的。我曾考虑用布尔类型创建其他字段,但这是最后的选择。新API 第一张图片我在产品的名称中添加了一个onchang

我想问一下,当产品已经创建时,是否有任何方法可以“禁用”onchange decorator

我有一个字段(X),它的值取决于其他3个字段(Y)中的内容。我使用了“api.onchange”。当产品被创建时,我想使其中一个Y字段不再改变X的值


我试图检查数据库中是否存在“self”,如exists(),但即使是新记录也标记为“existing”。我试图访问self.id,但这是不可能的。我曾考虑用布尔类型创建其他字段,但这是最后的选择。

新API

第一张图片我在
产品的名称中添加了一个onchange事件。模板
我使用调试模式停止程序,看看我是否有权访问
self。_origin
显然我有权访问它

第二张图片显示,当我更新产品时,ID值被传递

现在,第三张图片显示了我在创建新产品时,
self中的
id
值为False

所以,你能发布使用的代码吗?我想了解你为什么没有访问self的权限

旧API

当使用旧api self.\u origin为not access,但您的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

谢谢你的回复。奥多不承认自己的本源。如果我试图使用它,那么odoo说,
“product.template”对象没有属性“\u origin”
。我尝试了
如果isinstance(self.\u origin,models.NewId)或isinstance(self.\u origin.id,models.NewId)
并且简单地
打印(self.\u origin)
并且无论我是尝试创建新产品还是编辑现有产品,odoo都会在这一行崩溃。检查我的编辑我的问题您是如何实现onchange事件的