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

如何在Odoo表单视图中显示来自其他向导模型的字段?

解决方法

你遇到的问题根源很明确:hospital.appointment模型本身没有reason字段,视图绑定的是这个模型,自然无法直接引用其他模型(向导)的字段。要实现需求,核心是让reason数据和预约记录关联起来,下面是最合理的实现步骤:

步骤1:给hospital.appointment模型添加reason字段

既然取消预约的理由属于预约记录的属性,直接在目标模型中新增字段是最直接的方案:

class HospitalAppointment(models.Model):
    _name = "hospital.appointment"
    # 保留原有字段...
    reason = fields.Text(string="取消理由")

步骤2:修改向导模型,实现数据同步

更新向导模型,添加与预约的关联,并在取消操作时将向导中的reason写入对应预约记录:

class CancelAppointmentWizard(models.Model):
    _name = "cancel.appointment.wizard"
    _description = "Cancel Appointment Wizard"

    # 新增关联字段,绑定要取消的预约
    appointment_id = fields.Many2one('hospital.appointment', string="预约记录", required=True)
    reason = fields.Text(string="取消理由")

    def action_cancel_appointment(self):
        # 执行取消逻辑(比如修改预约状态),同时同步取消理由
        self.appointment_id.write({
            'state': 'cancelled',  # 假设你的模型有状态字段
            'reason': self.reason
        })
        # 关闭向导弹窗
        return {'type': 'ir.actions.act_window_close'}

步骤3:正常使用视图配置

现在hospital.appointment模型已经有了reason字段,你原来的表单视图代码就可以正常工作了,不需要额外修改:

<record id="view_hospital_appointment_form" model="ir.ui.view">
    <field name="name">hospital.appointment.form</field>
    <field name="model">hospital.appointment</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field name="reason"/>
                </group>
            </sheet>
        </form>
    </field>
</record>

补充说明

如果你的业务场景中,取消理由不需要长期保存在预约记录中,只是临时展示,也可以通过计算字段关联向导数据,但这种场景很少见——因为取消操作完成后,向导记录通常会被清理,导致视图无法显示数据。因此优先推荐上面的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:45:45