You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo QWeb采购申请报表打印员工详情并解决属性错误

解决Odoo QWeb采购申请报表中员工部门/电话显示的AttributeError问题

问题原因

你遇到的AttributeError: 'res.partner' object has no attribute 'department_id'是因为找错了数据路径:部门、员工电话这些信息属于hr.employee模型,而你当前代码里的o.user_id.partner_id指向的是res.partner(用户关联的合作伙伴记录),这个模型本身并没有department_id字段。

正确解决方案

采购申请记录的user_id(res.users模型)通过employee_id字段关联到对应的hr.employee记录,我们需要从这个关联路径去获取员工的部门和电话信息。

修改后的QWeb代码示例

<tr>
    <!-- 员工部门 -->
    <td style="border:1px solid #000;padding-left:5px">
        Department: <span t-esc="o.user_id.employee_id.department_id.name if o.user_id.employee_id else 'No Assigned Department'"/>
    </td>
    <!-- 员工工作电话 -->
    <td style="border:1px solid #000;padding-left:5px">
        Work Phone: <span t-esc="o.user_id.employee_id.work_phone if o.user_id.employee_id else 'No Phone Number'"/>
    </td>
</tr>

关键说明

  1. 数据关联路径:正确的关联链是 采购申请(o) → 用户(user_id) → 员工(employee_id) → 部门(department_id) / 员工电话(work_phone/mobile_phone)
  2. 空值判断:加入if o.user_id.employee_id else ...的判断是为了避免部分用户未关联员工记录时出现新的报错,提升报表的健壮性
  3. 可选字段:如果需要显示员工手机号,可以把work_phone替换为mobile_phone,这两个都是hr.employee模型的原生字段

内容的提问来源于stack exchange,提问作者user3606682

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:32:11