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
相关产品推荐
相关产品推荐

