Odoo v13扩展tree_view_ref关联明细操作树视图新增字段不显示问题
排查解决步骤
1. 先修正计算字段的装饰器错误
你当前的计算字段用了错误的装饰器:@api.depends_context是用于读取请求上下文参数(比如当前登录用户ID、上下文传的自定义参数等),而product_uom_qty、qty_done是stock.move.line自身的模型字段,需要用@api.depends装饰器才能正确触发字段计算,错误的装饰器会导致字段值无法正常生成,可能引发视图隐藏异常。
修正后的模型代码如下:
class StockMoveLine(models.Model): _inherit = 'stock.move.line' all_done = fields.Boolean(string="Check", compute="_check_done") @api.depends('product_uom_qty', 'qty_done') def _check_done(self): for move_line in self: if move_line.product_uom_qty == 0 and move_line.qty_done != 0: move_line.all_done = True else: move_line.all_done = False
2. 基础配置校验
- 确认模块已完成升级:修改模型和视图代码后,必须升级对应自定义模块才能让变更生效,不要仅重启服务不升级模块
- 重启Odoo服务:确保所有代码变更都被服务加载
3. 视图继承有效性校验
- 开启Odoo调试模式,进入「设置-技术-视图」,搜索原视图
stock.view_stock_move_line_detailed_operation_tree,查看其继承视图列表中你的自定义继承视图是否存在 - 点击原视图的「编辑架构」,检查你的自定义字段
<field name="all_done" readonly="1"/>是否已经出现在product_id字段之前的位置:- 如果架构中已存在该字段:说明视图继承生效,问题出在权限/缓存层面
- 如果架构中没有该字段:检查XPath表达式是否正确,确认原视图中确实存在
name="product_id"的字段,同时调低自定义继承视图的Sequence值(数值越小优先级越高,建议设为1),避免被其他模块的同视图继承规则覆盖
4. 上下文参数校验
打开库存调拨单表单页,点击调试模式下拉菜单的「查看上下文」,检查上下文参数中tree_view_ref的值是否确实为stock.view_stock_move_line_detailed_operation_tree,避免被其他第三方模块修改了关联的树视图ID,导致你修改的视图不是实际渲染的视图。
5. 权限与缓存排查
- 字段权限校验:进入「设置-技术-模型」,搜索
stock.move.line,找到all_done字段,确认当前操作用户所属的用户组拥有该字段的读权限,Odoo会自动隐藏无读权限的字段且不抛出错误 - 清理缓存:点击调试模式下拉菜单的「清理本地缓存」,刷新页面后再次查看字段是否显示
内容的提问来源于stack exchange,提问作者Zeskerr
相关产品推荐
相关产品推荐

