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

Odoo 13中如何将字段值传递至向导?

解决Odoo 13中按钮传递字段值到向导的问题

你的代码里有几个关键问题导致选中的字段值没能传递到向导,咱们一步步来修复:

1. 修正Python动作函数的错误

原函数里重复设置了res_id,而且没有把选中的员工ID以正确的方式传递给向导上下文。Odoo中给新创建的向导记录设置默认值,需要用default_字段名的格式把值放进context里。

修改后的函数代码:

def create_field(self):
    # 获取当前记录选中的员工ID
    employee_id = self.name.id if self.name else False
    return {
        'name': '员工调整向导',  # 替换成你需要的向导标题
        'view_mode': 'form',
        'res_model': 'dieu.chinh',
        'view_id': False,
        'res_id': False,  # 创建新向导记录时设为False,不要传self.id(那是原模型记录的ID)
        'context': {
            'default_name': employee_id,  # 这里的`name`对应向导模型里的字段名
            'current_id': self.id,  # 如果需要原模型记录ID可以保留
        },
        'target': 'new',  # 向导通常用弹窗展示,用`new`更合理;如果要替换当前视图可以保留`current`
        'type': 'ir.actions.act_window',
        'flags': {'form': {'action_buttons': True, 'options': {'mode': 'edit'}}},
    }

2. 确保向导模型有对应字段

你的向导模型dieu.chinh必须有一个和原模型匹配的Many2one字段来接收员工值,代码示例:

from odoo import models, fields

class DieuChinh(models.TransientModel):
    _name = 'dieu.chinh'
    _description = '员工调整向导'

    name = fields.Many2one('hr.employee', string="USERNAME")
    # 其他你需要的字段...

3. 检查向导视图配置

确保你的向导XML视图里包含这个字段,这样值才能正常显示:

<field name="name" />

原代码失效的原因

  • 重复赋值res_id导致覆盖,而且传递的是原模型记录的ID(新向导还未创建,应该设为False)
  • 上下文里只传了current_id,没有传递员工ID对应的默认值,Odoo无法自动填充字段

这样修改后,点击按钮打开向导时,USERNAME字段就会自动填充你之前选中的员工了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:59:34