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

Odoo 10中如何在many2one字段中打开日历视图

在Many2one字段中打开日历视图的实现方法

当然可以在Odoo的many2one字段中打开日历视图啦!下面给你两种实用的实现思路,适配不同的需求场景:

方法一:通过字段Context直接配置(弹窗内切换视图)

这种方法是让many2one的选择弹窗支持切换到日历视图,用户点击字段的放大镜按钮后,就能在弹窗的视图切换器里看到日历选项。

只需要在XML视图的many2one字段中添加context参数,指定目标模型的日历视图外部ID即可:

<field name="event_id" 
       context="{'calendar_view_ref': 'event.view_event_calendar', 
                 'form_view_ref': 'event.view_event_form',
                 'tree_view_ref': 'event.view_event_tree'}"/>
  • 这里的calendar_view_ref要替换成你目标模型对应的日历视图的外部ID(可以在Odoo的视图设置里找到)
  • 搭配form_view_ref和tree_view_ref是为了保证弹窗里同时支持其他常用视图,你也可以根据需要调整

方法二:自定义按钮跳转(独立打开日历视图)

如果想要更直接的操作,比如在表单里加一个按钮,点击后直接打开关联记录的日历视图,可以用这种方法:

步骤1:在XML视图中添加按钮

在表单视图的合适位置(比如字段旁边)添加一个按钮:

<button name="open_associated_calendar" 
        string="打开关联日历" 
        type="object" 
        class="oe_highlight"/>

步骤2:在模型中实现跳转方法

在对应的业务模型里添加Python方法,返回打开日历视图的动作:

def open_associated_calendar(self):
    self.ensure_one()
    # 替换成你的many2one字段名和目标模型
    target_model = self.event_id._name
    target_id = self.event_id.id
    return {
        'name': '关联记录日历',
        'type': 'ir.actions.act_window',
        'view_mode': 'calendar',
        'res_model': target_model,
        'domain': [('id', '=', target_id)],
        'context': self.env.context,
        # 如果需要默认聚焦到当前记录的日期,可以在这里添加上下文参数
        # 'context': {'default_start': self.event_id.start_date}
    }

注意事项

  • 无论用哪种方法,都要确保目标模型已经定义了日历视图(比如在目标模型的XML视图中配置了<calendar>节点)
  • 第一种方法适合需要在选择弹窗里浏览多条记录的场景,第二种方法更适合快速查看当前关联记录的日历详情

内容的提问来源于stack exchange,提问作者Pawan Kumar Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:41:53