Odoo 8技术问询:如何获取当前活动ID/模型字段及未保存表单字段
在Odoo 8中访问编辑模式未保存表单的字段
你遇到的问题核心是:未保存的新记录还未写入数据库,不存在active_id,所以通过env.context.get('active_id')只能拿到None。要访问这类记录的字段,直接使用当前记录集self即可,具体解决方法如下:
原理说明
编辑模式下的未保存记录,是在客户端临时缓存、尚未持久化到数据库的实例,此时没有数据库ID,自然无法通过active_id获取。而Odoo的ORM会把当前编辑的记录实例绑定到方法的self参数上(配合合适的API装饰器),直接通过self就能访问所有字段值。
修改后的代码示例
@api.one def _check_butcher(self): # 直接通过self访问未保存记录的字段 can_butcher_value = self.can_butcher logging.info("TEST \n TEST %s" % can_butcher_value) return can_butcher_value
关键注意点
- 如果是按钮触发的方法,确保按钮的
context没有覆盖默认值,且方法使用@api.one或@api.multi装饰器(Odoo 8中推荐用@api.one处理单条记录)。 - 若为计算字段,需设置
store=False(因为未保存记录无法存储计算结果),并通过self直接计算字段值。
内容的提问来源于stack exchange,提问作者juggss
相关产品推荐
相关产品推荐

